如何在Java中删除单词后面所有的标点符号?

5

我需要删除单词后面的标点符号。例如,word?! 应该被改为 wordstring: 应该被改为 string

编辑:算法应仅删除字符串末尾的标点符号。字符串中的任何标点符号都应保留。例如,doesn't; 应该变成 doesn't


标点符号可以出现在其他有效的位置吗?比如说,如果你有一个单词“:test”,那么这个标记会保留还是被替换掉?基本上,你是删除所有标点符号,还是只在单词末尾删除? - Bryan
2个回答

6
使用方法replaceAll(...)来接受一个正则表达式。
String s = "don't.  do' that! ";
s = s.replaceAll("(\\w+)\\p{Punct}(\\s|$)", "$1$2");
System.out.println(s);

2
你可以使用正则表达式来修改字符串。
String resultString = subjectString.replaceAll("([a-z]+)[?:!.,;]*", "$1");

据我所知,没有任何一个单词以'结尾并将其用作标点符号。因此,这个正则表达式适用于您。


如果字符串只包含一个单词并且意图是删除尾部标点符号,则可以简化表达式——然而,OP没有澄清... - bobbymcr
bobbymcr 我打算只删除末尾的标点符号。在这种情况下,该表达式如何简化? - user1044680

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接