Java 将单词之间的多个空格替换为单个空格

Java 将单词之间的多个空格替换为单个空格,java,regex,Java,Regex,我需要使用java将一行中单词之间的多个空格替换为一个空格。但是,当两个单词中的一个单词是连字符“-”时,它不起作用。如果一行中有一个单词是连字符'-',您能告诉我如何用一个空格替换多个单词之间的空格吗 String s="1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2" s.replaceAll("\\b\\s{2,}\\b", " "); 谢谢删除单词边界\\b,因为破折号和空格之间没有边界。删除单词边界\\b,因为破折号和空格之间

我需要使用java将一行中单词之间的多个空格替换为一个空格。但是,当两个单词中的一个单词是连字符“-”时,它不起作用。如果一行中有一个单词是连字符'-',您能告诉我如何用一个空格替换多个单词之间的空格吗

String s="1 2 1 2 1 2 1 2 1 2 1     2 1 2 1 2 1 2 1 2 1 2 1 2"

s.replaceAll("\\b\\s{2,}\\b", " ");
谢谢

删除单词边界\\b,因为破折号和空格之间没有边界。

删除单词边界\\b,因为破折号和空格之间没有边界。

您可以简单地使用:

String s = "1   -   2   2"
s.replaceAll("\\s{2,}", " ");
给出:1-2

或者更简单地说:

s.replaceAll("\\s+", " ");
您可以简单地使用:

String s = "1   -   2   2"
s.replaceAll("\\s{2,}", " ");
给出:1-2

或者更简单地说:

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

你能举一个更好的例子来说明什么不起作用吗?如果我有一行有5个单词,我想确保这行中任意两个连续单词之间的多个空格减少为一个空格。但是,如果行中两个连续单词中有一个单词是连字符“-”,则上述代码不起作用。你能告诉我如何在Java中实现这一点吗参考帖子:连字符不是单词边界的一部分。单词边界对您来说重要吗,还是您可以只执行s.replaceAll\\s{2,}?你能举一个更好的例子来说明什么不起作用吗?如果我有一行有5个单词,我想确保这行中任意两个连续单词之间的多个空格减少为一个空格。但是,如果行中两个连续单词中有一个单词是连字符“-”,则上述代码不起作用。你能告诉我如何在Java中实现这一点吗参考帖子:连字符不是单词边界的一部分。单词边界对您来说重要吗,还是您可以只执行s.replaceAll\\s{2,}?请参见零宽度非连接件。另外,检查s.replaceAll\\s{2,},对我来说效果很好。谢谢大家。请参阅零宽度非连接件。另外,检查s.replaceAll\\s{2,},对我来说效果很好。谢谢大家。