Java Regex - 减少字符串中的空格

11 java regex

我没有时间了解正则表达式,我需要快速回答.平台是Java.

我需要字符串

"Some text   with  spaces"
Run Code Online (Sandbox Code Playgroud)

......被转换为

"Some text with spaces"
Run Code Online (Sandbox Code Playgroud)

即,将2个或更多个连续空格改变为1个空格.

Tim*_*sen 47

String a = "Some    text  with   spaces";
String b = a.replaceAll("\\s+", " ");
assert b.equals("Some text with spaces");
Run Code Online (Sandbox Code Playgroud)

  • 是的,这个解决方案不是那么有效,但只有这个操作发生在性能热点内才有意义.绝对不值得投票. (5认同)
  • @Chris - 不要过早地开始优化正则表达式,我相信这就足够了. (4认同)
  • 这是一个有效的观点,我总是在这种情况下使用\ s {2,}或等价物,但实际上,它并不重要. (2认同)
  • 如果这已经被库优化,只是在多个空间上进行替换,我不会感到惊讶.这是可读的,可以完成工作. (2认同)

Pet*_*ton 12

如果我们专门谈论空间,你想要专门测试空间:

MyString = MyString.replaceAll(" +", " ");
Run Code Online (Sandbox Code Playgroud)

使用\s将导致所有空格被替换 - 有时需要,而不是.

此外,仅匹配2个或更多的更简单方法是:

MyString = MyString.replaceAll(" {2,}", " ");
Run Code Online (Sandbox Code Playgroud)

(当然,\s如果希望用单个空格替换任何空格,这两个示例都可以使用.)