java利用正则表达式处理特殊字符的方法实例
前言
一串字符串中有特殊符号,可能会影响到相关接口业务,所以需要把字符串中的特殊字符都过滤掉
百度上面搜索大部分处理方法是通过正则表达式,他需要处理的特殊符号都写进正则表达式中去校验,这种方式一眼看过去就非常别扭,感觉不灵活,万一需要过滤其他的又得临时加进去
解决方案
如下所示
publicstaticStringstringFilter(Stringstr){ StringregEx="[\\u00A0\\s\"`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]"; Patternp=Pattern.compile(regEx); Matcherm=p.matcher(str); returnm.replaceAll("").trim(); }
这种方式是网上普遍能搜索到的,个人任务极其的low,不推荐使用,推荐使用下面这种
publicstaticStringromveSpecialChar(Stringstr){ StringregEx="\\pP|\\pS|\\s+"; str=Pattern.compile(regEx).matcher(str).replaceAll("").trim(); returnstr; }
这种方式就比较简洁,中国pP和pS匹配特殊符号然后替换掉,也可以结合其他稍作修改就好更加完美
注意事项
其中
\s+是空格一个或者多个,不管在那个位置都能匹配
\pP其中的小写p是property的意思,表示Unicode属性,用于Unicode正表达式的前缀。
大写P表示Unicode字符集七个字符属性之一:标点字符。
其他六个是
L:字母;
M:标记符号(一般不会单独出现);
Z:分隔符(比如空格、换行等);
S:符号(比如数学符号、货币符号等);
N:数字(比如阿拉伯数字、罗马数字等);
C:其他字符
上面这七个是属性,七个属性下还有若干个子属性,用于更进一步地进行细分。
Java中用于Unicode的正则表达式数据都是由Unicode组织提供的。
Unicode正则表达式标准(可以找到所有的子属性),可参考:http://www.unicode.org/reports/tr18/
各Unicode字符属性的定义,可以用一看看某个字符具有什么属性。可参考:http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
这个文本文档一行是一个字符,第一列是Unicode编码,第二列是字符名,第三列是Unicode属性,以及其他一些字符信息。
总结
到此这篇关于java利用正则表达式处理特殊字符的文章就介绍到这了,更多相关java正则表达式处理特殊字符内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!