Java で文字列の空白を削除するには、コードはどのように見える必要がありますか?
私は次のことを試しました:
/* Option 1 */ String x=splitString.replaceAll("\\s+","");
/* Option 2 */ String x=splitString.trim()
これらのどちらも、私が期待する結果をもたらしません。
すべての空白に\s
一致すると考える少数の人々は、まったく間違っています。ドキュメントを見ると、それが一致していることがわかります-改行空白の束(つまり、単なる古い普通の空白)。[ \t\n\x0B\f\r]
同様に、trim()
すべての空白にも一致しません (これはさらに悪いことに、値 <= スペースを持つすべての文字に一致し、そのほとんどは技術的に空白ではありません) - したがって、文字列の前後にスペースがある例を挙げて、trim()
その上で、想像を絶する包括的なテストではありません。
上記を考えると、あなたが提供した(正規表現ベースの)コードは、文字列からすべての改行空白を確実に削除するため、改行しない可能性のある空白文字がそこにあるように思えます。これは、文字列をコードで記述するだけでなく、何らかの外部ソースからテキストを取得した場合に特に当てはまります (たとえば、HTML ページの一部が最も可能性の高い候補である可能性があります)。
この場合は、次のことを試してください。
String x=splitString.replaceAll("\\p{Z}","");
... whereは、非改行スペースだけでなく、あらゆる種類の空白に\p{Z}
一致するためのショートカットです。は、より長い (同等の) 形式です。\p{Separator}