Java 修剪字符串中空格的最佳方法

Java 修剪字符串中空格的最佳方法,java,regex,trim,Java,Regex,Trim,考虑到性能,如何修剪内部空间,只留下一个空间 将两个或多个空格“\\s{2,}”替换为一个空格”,然后执行trim(),以除去前面和后面的空格,如第一个示例所示 output = input.replaceAll("\\s{2,}", " ").trim(); “Hello a a g a gag gs@”.replaceAll([]+{2},”).trim() 输出: AA BB 注意:与这里的一些其他解决方案不同,这也用一个空格替换了一个选项卡。如果没有任何选项卡,则可以使用“{2,}”

考虑到性能,如何修剪内部空间,只留下一个空间


将两个或多个空格
“\\s{2,}”
替换为一个空格
,然后执行
trim()
,以除去前面和后面的空格,如第一个示例所示

output = input.replaceAll("\\s{2,}", " ").trim();
“Hello a a g a gag gs@”.replaceAll([]+{2},”).trim()

输出:

AA BB
注意:与这里的一些其他解决方案不同,这也用一个空格替换了一个选项卡。如果没有任何选项卡,则可以使用“{2,}”,这将更快:

System.out.println("     AA     BB".replaceAll(" {2,}", " ").trim());

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

s = s.replaceAll("\\s+", " " ).trim();
但我认为选择正确的问题也很重要。与其询问如何使用正则表达式修剪
字符串
,为什么不直接询问修剪
字符串
,让回答的人向您展示最佳策略


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

问题已被编辑。现在你能告诉我一个更好的方法吗?谢谢。我不是有意暗示有无可争议的更好的方法。如果我知道一个问题,我肯定会告诉你,而不会坚持先改变问题。我只是想指出,你可能是基于正确策略的假设而限制了回应。我想说的是,除非您有非常强烈的性能理由想要尝试替代方案,否则我可能会使用regex路径。
AA BB
System.out.println("     AA     BB".replaceAll(" {2,}", " ").trim());
s = s.replaceAll("\\s+", " " ).trim();
s = s.replaceAll("\\s+", " " ).trim();