質問

私はこのような文字列を持っています:

BEGIN\n\n\n\nTHIS IS A STRING\n\nEND

そして、私はすべての新しいライン文字を削除して、次のような結果を持ちたいと思います。

BEGIN THIS IS A STRING END

これを達成するにはどうすればよいですか?標準のAPI関数は、私の経験のエスケープシーケンスのために機能しません。

役に立ちましたか?

解決

シンプルな replace('\n', ' ') 文字列が次のようになります。

 BEGIN    THIS IS A STRING  END
      ****                **

どこ *'sはスペースです。単一のスペースが必要な場合は、試してみてください replaceAll("[\r\n]{2,}", " ")

そして、それらがラインブレークではなく、文字通りです "\n"wither try:

replace("\\n", " ")

また:

replaceAll("(\\\\n){2,}", " ")

他のヒント

試す str.replaceAll("\\\\n", ""); - これは二重脱出と呼ばれます:)

これは私にとってはうまくいきます:

String s = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND";
String t = s.replaceAll("[\n]+", " ");
System.out.println(t);

キーは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("  ", " ");
}

確かに、標準のAPIは機能しますが、脱出する必要がある場合があります( " n")。

私は通常Javaでコーディングしませんが、簡単な検索でString.trimがあなたのために働くべきだと信じるようになります。それは、 n tなどとともに、リードとトレイルの白い空間を除去すると言っています...

このスニペットが役立つことを願っています、

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top