【问题标题】:The Best Way of Trimming Spaces in a String修剪字符串中空格的最佳方法
【发布时间】:2009-11-26 21:35:12
【问题描述】:

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

Input:
     AA     BB
Output:
AA BB

Input:
A      A
Output:
A A

【问题讨论】:

    标签: java regex trim


    【解决方案1】:
    System.out.println("     AA     BB".replaceAll("\\s+", " ").trim());
    

    输出:

    AA BB
    

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

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

    【讨论】:

      【解决方案2】:

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

      output = input.replaceAll("\\s{2,}", " ").trim();
      

      【讨论】:

        【解决方案3】:
        s = s.replaceAll("\\s+", " " ).trim();
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            这里有正确答案,例如:

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

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

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

            【讨论】:

            • 问题已被编辑。现在你能告诉我一个更好的方法吗?谢谢。
            • 我并不是要暗示有无可争议的更好方法。如果我知道一个,我肯定会告诉你,而不是坚持先改变问题。我只是想指出,您可能会根据正确策略的假设来限制响应。我会说,除非你有很强的性能理由想要尝试替代方案,否则我可能会做正则表达式路线。
            猜你喜欢
            • 1970-01-01
            • 2015-09-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多