2016-04-18 13 views
-1

Ich erstelle ein kleines Programm atm und ich muss jeden Zeilenumbruch durch ein Symbol ersetzen, z. "#". Also, wenn ich diesen Text eingeben:Ersetzen Sie jeden Zeilenumbruch durch ein anderes Symbol

String text2 = text.replaceAll("\\\\n", "#"); 

Ich habe auch versucht

String text2 = text.replaceAll("\n", "#"); //text is the inputed text 

nach einigen Recherchen:

test1 
test2 
test3 

es

test1#test2#test3 

Ich habe versucht, dies zu tun werden soll weil jemand sagt, das hat etwas mit dem Compiler oder idk zu tun. Jede Hilfe wird geschätzt!

+1

Und wie bekommen Sie 'Text' ? Enthält es Zeilenumbrüche? Auch "ersetzen" ist, was Sie wollen; 'replaceAll' nimmt einen * regulären Ausdruck *. –

+0

Text ist eine String-Variable und ich bekomme den Text von einem jTextPane wie folgt: textPane.getText() @CubeJockey – SyxDuLappen

Antwort

3

Zeilenumbrüche sind systemabhängig. Auf UNIX-Systemen ist es "\ n"; Auf Microsoft Windows-Systemen ist es "\ r \ n". Es ist also besser, Ihre Code-Plattform unabhängig zu machen.

Verwendung so etwas wie:

String text = rawText.replaceAll(System.lineSeparator(), "#"); 

Pleas beachten Sie, dass System.lineSeparator() von Java 1.7 zur Verfügung steht.

+1

Zusätzlich, wenn Sie keine Regex-Syntax verwenden wollen, können Sie 'replace' anstelle von' replaceAll' verwenden. Beide Methoden ersetzen * alle * Vorkommen von gesuchtem Text (der Hauptunterschied zwischen ihnen ist nur die Unterstützung von Regex-Syntax). – Pshemo

0

Verwenden Sie einen Escape-Backslash, indem Sie \\ eingeben. Überprüfen Sie auch die Wagenrückgabe \r\n.

String test = "test1\ntest2\r\ntest3"; 
System.out.println(test.replaceAll("(\\n|\\r\\n)", "#")); 
0

replaceAll("\n", "#") sollte gut funktionieren, wenn Ihre Linien von \n nur getrennt Ware. Wenn es nicht funktioniert, bedeutet das, dass Ihr Text andere Zeilentrennzeichen wie \r, \u0085 (nächste Zeile - NEL) oder höchstwahrscheinlich eine Kombination von \r\n verwendet.

Da replaceAll die Regex-Syntax verwendet, können wir alle Zeilentrennzeichen mit \R abgleichen (in Java 8 zur Regex-Engine hinzugefügt). So könntest du es versuchen.

String text2 = text.replaceAll("\\R", "#"); 

Wenn Sie nicht Java 8 (wie im Falle von Android-Anwendungen) verwenden, können Sie regex verwenden könnte, die \r\n oder \n oder \r vertreten:

String text2 = text.replaceAll("\r\n|\n|\r", "#"); 
//can be reduced to .replaceAll("\r?\n|\r", "#"); 
Verwandte Themen