この文字列をJavaで変更する簡単な方法を探しています
" hello there "
こんな感じのものに
"hello there"
ここで、複数のスペースをすべて 1 つのスペースに置き換えますが、文字列の先頭にある 1 つ以上のスペースも削除します。
こういうことで、私は部分的にはそこにたどり着く
String mytext = " hello there ";
mytext = mytext.replaceAll("( )+", " ");
しかし、完全にそうではありません。
ベストアンサー1
これを試して:
String after = before.trim().replaceAll(" +", " ");
参照
String.trim()
- 先頭と末尾の空白を省略した文字列のコピーを返します。
- 正規表現.info/繰り返し
trim()
正規表現なし
これを 1 つの だけで実行することも可能ですreplaceAll
が、ソリューションよりも読みにくくなりますtrim()
。とはいえ、ここでは regex で何ができるかを示すために提供しています。
String[] tests = {
" x ", // [x]
" 1 2 3 ", // [1 2 3]
"", // []
" ", // []
};
for (String test : tests) {
System.out.format("[%s]%n",
test.replaceAll("^ +| +$|( )+", "$1")
);
}
代替案は 3 つあります。
^_+
: 文字列の先頭の任意のスペースシーケンス- に一致して置換し
$1
、空の文字列を取得します。
- に一致して置換し
_+$
: 文字列の末尾の任意のスペースシーケンス- に一致して置換し
$1
、空の文字列を取得します。
- に一致して置換し
(_)+
: 上記のいずれにも一致しないスペースのシーケンス、つまり中央にあるもの- に一致して置換すると
$1
、1つのスペースがキャプチャされます。
- に一致して置換すると