5

如何在考虑性能的情况下修剪内部空间只留下一个空间?

Input:
     AA     BB
Output:
AA BB

Input:
A      A
Output:
A A
4

5 回答 5

11
System.out.println("     AA     BB".replaceAll("\\s+", " ").trim());

输出:

AA BB

注意:与此处的其他一些解决方案不同,这也将单个选项卡替换为单个空格。如果您没有任何选项卡,您可以使用“{2,}”代替它会更快:

System.out.println("     AA     BB".replaceAll(" {2,}", " ").trim());
于 2009-11-26T21:39:43.363 回答
7

如第一个示例所示,将两个或多个空格替换"\\s{2,}"为一个空格" ",然后执行trim()以消除前导空格和尾随空格。

output = input.replaceAll("\\s{2,}", " ").trim();
于 2009-11-26T21:37:54.397 回答
2
s = s.replaceAll("\\s+", " " ).trim();
于 2009-11-26T21:42:40.937 回答
0

这里有正确的答案,例如:

s = s.replaceAll("\\s+", " " ).trim();

但我认为选择正确的问题也很重要。与其询问String使用正则表达式修剪 a ,不如直接询问修剪String,并让回答的人向您展示最佳策略?

折叠空格的方法可能比使用正则表达式更好。当然还有其他方法。

于 2009-11-26T21:46:16.613 回答
0

"Hello a a g g a   gag gs    gs@".replaceAll( "[ ]+{2}", " ") ).trim();

于 2009-11-26T21:38:53.663 回答