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.

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top