我有一个字符串:
test text test
我希望保留单个空格,并用
替换多个空格。
转化后结果为:
tets text test
请问这里有人能给我推荐一个正则表达式
吗?
String replaced = str.replaceAll("((?<= ) | (?= ))", " ");
说明: 我在这里使用了正则表达式的前瞻和后顾功能。 ((?<= ) | (?= ))
意味着查找一个空格,它要么是前面有一个空格(?<= )
要么是后面跟着一个空格(?= )
。这将确保单个空格不被替换,但所有多个空格都将被替换。有关前瞻和后顾的更多详细信息,请参见此链接:http://www.regular-expressions.info/lookaround.html
String str="test text test";
str=str.replaceAll("\\s\\s"," ");
str=str.replaceAll(" \\s"," ");//It will work for Odd number
第一个替换操作会在空格数为奇数时留下一个空格,因此第二个替换操作可以解决这个问题。
尝试像下面这样做,它会帮助你。
它将用单个空格
替换多个空格
。
YourString.trim().replaceAll(" +", " ");
" +"
作为第一个参数可能更有效,因为它不会将单个空格替换为另一个单个空格。 - KeppilString str = "test text test ";
System.out.println(str.replaceAll("\\s+", " "));