字符串仅替换连续的空格

时间:2013-04-09 10:16:39

标签: java regex

我有类似的字符串:

test    text test 

我希望保留单个空格,并用 替换多个空格 所以它会变成:

tets    text test

这里的任何人都可以建议我regex吗?

4 个答案:

答案 0 :(得分:4)

您可以使用以下替代品:

String replaced = str.replaceAll("((?<= ) | (?= ))", "&nbsp;");

现场演示:http://ideone.com/kNb7rd

说明:我在这里使用正则表达式的前瞻和后瞻功能。 ((?<= ) | (?= ))表示找到一个空格,其中前面有一个空格(?<= ) 后跟一个空格(?= ) 这将确保单个空格空间未被替换,但所有多个空格都被替换。有关外观的详细信息,请参阅此链接:http://www.regular-expressions.info/lookaround.html

答案 1 :(得分:0)

尝试以下它会帮助你..

Multiple spaces替换为Single Space ..

YourString.trim().replaceAll(" +", " ");

答案 2 :(得分:0)

String str = "test    text test ";
System.out.println(str.replaceAll("\\s+", " "));

答案 3 :(得分:0)

String str="test     text test";
str=str.replaceAll("\\s\\s","&nbsp;&nbsp;");
str=str.replaceAll("&nbsp;\\s","&nbsp;&nbsp;");//It will work for Odd number

如果有奇数个空格,第一个替换将留下一个空格,所以第二个可以解决这个问题。