Java如何用字符串中的单个空格替换2个或更多空格并删除前导和尾随空格

新手上路,请多包涵

在 Java 中寻找快速、简单的方法来更改此字符串

" hello     there   "

看起来像这样的东西

"hello there"

我用一个空格替换所有这些多个空格,除了我还希望字符串开头的一个或多个空格消失。

这样的事情让我部分地在那里

String mytext = " hello     there   ";
mytext = mytext.replaceAll("( )+", " ");

但不完全是。

原文由 Nessa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 499
1 个回答

尝试这个:

 String after = before.trim().replaceAll(" +", " ");

也可以看看


trim() 正则表达式

也可以仅使用一个 replaceAll 来执行此操作,但这比 trim() 解决方案的可读性要差得多。尽管如此,这里提供它只是为了展示正则表达式可以做什么:

     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 ,它会捕获一个空格

也可以看看

原文由 polygenelubricants 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题