我有一个字符串
"This is a big sentence . ! ? ! but I have to remove the space ."
在这句话中,我想删除标点符号之前的所有空格,并且应该成为
"This is a big sentence.!?! but I have to remove the space."
我正在尝试使用"\p{Punct}"
但无法替换为字符串。
答案 0 :(得分:10)
您应该使用positive lookahead:
newStr = str.replaceAll("\\s+(?=\\p{Punct})", "")
ideone.com demo for your particular string
分解表达式:
\s
:空格...... (?=\\p{Punct})
...之后是标点符号。答案 1 :(得分:1)
尝试使用此正则表达式查找标点符号前面的所有空格:\s+(?=\p{Punct})
(Java字符串:"\\s+(?=\\p{Punct})"
)
答案 2 :(得分:0)
您可以使用组并在替换字符串中引用它:
String text = "This is a big sentence . ! ? ! but I have to remove the space .";
String replaced = text.replaceAll("\\s+(\\p{Punct})", "$1")
在这里,我们使用(\\p{Punct})
捕获组中的标点符号,并将所有匹配的字符串替换为组(名为$1
)。
无论如何,我的答案仅仅是好奇心:我认为@aioobe答案更好:)