试试这个:String after = before.trim().replaceAll(" +", " ");
另见
不trim()雷吉
也有可能只用一个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,它捕获单个空间。
另见