【发布时间】:2009-11-26 21:35:12
【问题描述】:
如何在考虑性能的情况下修剪内部空间只留下一个空间?
Input: AA BB Output: AA BB Input: A A Output: A A
【问题讨论】:
如何在考虑性能的情况下修剪内部空间只留下一个空间?
Input: AA BB Output: AA BB Input: A A Output: A A
【问题讨论】:
System.out.println(" AA BB".replaceAll("\\s+", " ").trim());
输出:
AA BB
注意:与此处的其他一些解决方案不同,这也将单个选项卡替换为单个空格。如果您没有任何选项卡,您可以使用“{2,}”,这样会更快:
System.out.println(" AA BB".replaceAll(" {2,}", " ").trim());
【讨论】:
将两个或多个空格 "\\s{2,}" 替换为单个空格 " ",然后执行 trim() 以消除前导空格和尾随空格,如第一个示例中所示。
output = input.replaceAll("\\s{2,}", " ").trim();
【讨论】:
s = s.replaceAll("\\s+", " " ).trim();
【讨论】:
<pre>"Hello a a g g a gag gs gs@".replaceAll( "[ ]+{2}", " ") ).trim();</pre>
【讨论】:
这里有正确答案,例如:
s = s.replaceAll("\\s+", " " ).trim();
但我认为选择正确的问题也很重要。与其询问使用正则表达式修剪String,不如直接询问修剪String,并让回答的人向您展示最佳策略?
折叠空格的方法可能比使用正则表达式更好。当然还有其他方法。
【讨论】: