(1) s.replaceAll( "\\p{Punct}","" ); (2) s.replaceAll("\\pP",""); (3) s.replaceAll("\\p{P}","");
(1)不能完全清楚所有标点,(2)和(3)等价都能完全清楚标点(中文和英文都能清除)
需要注意的是,还是存在一些系统不认为是标点的半角和全角符号无法清除,如下所示:
+~$`^=|<>~`$^+=|<>¥×
修改后:
(2) s.replaceAll( "[\\pP+~$`^=|<>~`$^+=|<>¥×]",""); (3) s.replaceAll( "[\\p{P}+~$`^=|<>~`$^+=|<>¥×]","");
注意一下, JDK5或以下的环境中不支持全角单引号对、双引号替换。在JDK6中由于加入了Pi和Pf两个Unicode子属性,因此就能替换掉。
在JDK6以下的版本中可以这样:
s = s.replaceAll("[\\pP‘’“”]","");