Java ersetzen Sonderzeichen in einer Zeichenfolge
Frage
Ich habe eine solche Zeichenfolge:
BEGIN\n\n\n\nTHIS IS A STRING\n\nEND
Und ich möchte alle neuen Zeilenzeichen entfernen und das Ergebnis haben als:
BEGIN THIS IS A STRING END
Wie erledige ich das? Die Standard -API -Funktionen funktionieren aufgrund der Fluchtsequenz meiner Erfahrung nicht.
Lösung
Eine einfache replace('\n', ' ')
wird dazu führen, dass die Zeichenfolge wird:
BEGIN THIS IS A STRING END
**** **
bei dem die *
'S sind Räume. Wenn Sie einzelne Räume wollen, versuchen Sie es replaceAll("[\r\n]{2,}", " ")
Und falls sie keine Linienbrüche, sondern wörtlich sind "\n"
Ich werde versuchen:
replace("\\n", " ")
oder:
replaceAll("(\\\\n){2,}", " ")
Andere Tipps
Versuchen str.replaceAll("\\\\n", "");
- Dies nennt man doppelte Flucht :)
Das funktioniert für mich:
String s = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND";
String t = s.replaceAll("[\n]+", " ");
System.out.println(t);
Der Schlüssel ist der Reg-ex.
String str = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND;";
str = str.replaceAll("\\\n", " ");
// Remove extra white spaces
while (str.indexOf(" ") > 0) {
str = str.replaceAll(" ", " ");
}
Sicher, die Standard -API wird funktionieren, aber Sie müssen möglicherweise entkommen (" n").
Normalerweise codiere ich in Java nicht, aber eine schnelle Suche lässt mich glauben, dass String.trim für Sie funktionieren sollte. Es heißt, dass es zusammen mit n t usw.
Hoffe, dieser Ausschnitt wird helfen,
Scanner sc = new Scanner(new StringReader("BEGIN\n\n\n\nTHIS IS A STRING\n\nEND "));
String out = "";
while (sc.hasNext()) {
out += sc.next() + " ";
}
System.out.println(out);