Zeilenumbrüche und Tabulatoren in Java entfernen

Hier ein kleiner Beispielcode um einen Zeilenumbruch oder eine Tabulator-Einrückung in Java zu entfernen:

Etwas unsaubere Lösung mit replace:

1
2
3
4
5
6
7
8
9
10
11
    public String formatText(String strGivenText)
    {
        // Tabulator entfernen
        String strNewText   = strGivenText.replace('\t', '\0');
        // Zeilenumbruch entfernen (Unix)
        strNewText          = strNewText.replace('\n', '\0');
        // Zeilenumbruch/Wagenrücklauf entfernen (Windows)
        strNewText          = strNewText.replace('\r', '\0');
 
        return strNewText;
    }

Elegante Lösung mit StringBuffer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public String formatText(String strGivenText)
    {
        StringBuffer sbFormattedText = new StringBuffer(strGivenText);
 
        for(int i=0; i<sbFormattedText.length(); i++)
        {
           if(sbFormattedText.charAt(i) == '\n')
               sbFormattedText.deleteCharAt(i);
 
           if(sbFormattedText.charAt(i) == '\r')
               sbFormattedText.deleteCharAt(i);
 
           if(sbFormattedText.charAt(i) == '\t')
               sbFormattedText.deleteCharAt(i);
        }
 
        return sbFormattedText.toString();
    }

3 Gedanken zu „Zeilenumbrüche und Tabulatoren in Java entfernen“

  1. Vielen Dank!

    Die elegante Version funktioniert so noch besser:

    public String formatText(String strGivenText)
    {
    StringBuffer sbFormattedText = new StringBuffer(strGivenText);
    boolean found = false;
    for(int i=0; i<sbFormattedText.length(); i++)
    {
    found = false;
    if(sbFormattedText.charAt(i) == '\n')
    {sbFormattedText.deleteCharAt(i); found = true;}
    if(sbFormattedText.charAt(i) == '\r')
    {sbFormattedText.deleteCharAt(i); found = true;}
    if(sbFormattedText.charAt(i) == '\t')
    {sbFormattedText.deleteCharAt(i); found = true;}
    if(found) i –;
    }
    return sbFormattedText.toString();
    }

    ohne die Zurücksetzung von i werden nämlich keine aufeinanderfolgenden Zeilenumbrüche detektiert.

  2. Hallo !

    Leider funktioniert diese Lösung nicht immer. Falls wir gleich am Anfang ein Zeilenumbruch haben, wird i = -1, was zu einem Fehler führt.

    Mein Vorschlag wäre :

    StringBuffer text = new StringBuffer(fromValue);

    int i=0;
    boolean addI = true;
    while (i < text.length()) {

    if (text.charAt(i) == '\n') {
    text.deleteCharAt(i);
    addI = false;

    }

    if (text.charAt(i) == '\r') {
    text.deleteCharAt(i);
    addI = false;

    }

    if (text.charAt(i) == '\t') {
    text.deleteCharAt(i);
    addI = false;

    }

    if (addI) {
    i++;
    }

    addI = true;
    }

    return text.toString();

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.