java正则表达式处理特殊字符
前⾔
⼀串字符串中有特殊符号,可能会影响到相关接⼝业务,所以需要把字符串中的特殊字符都过滤掉
百度上⾯搜索⼤部分处理⽅法是通过正则表达式, 他需要处理的特殊符号都写进正则表达式中去校验, 这种⽅式⼀眼看过去就⾮常别扭, 感觉不灵活, 万⼀需要过滤其他的⼜得临时加进去
解决⽅案
如下所⽰
public static String stringFilter (String str){
String regEx="[\\u00A0\\s\"`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern p = Patternpile(regEx);
Matcher m = p.matcher(str);
placeAll("").trim();
}
这种⽅式是⽹上普遍能搜索到的, 个⼈任务极其的low, 不推荐使⽤, 推荐使⽤下⾯这种
public static String romveSpecialChar(String str){
replaceall()String regEx ="\\pP|\\pS|\\s+";
str = Patternpile(regEx).matcher(str).replaceAll("").trim();
return str;
}
这种⽅式就⽐较简洁, 中国pP和pS匹配特殊符号然后替换掉, 也可以结合其他稍作修改就好更加完美
注意事项
其中
\s+是空格⼀个或者多个,不管在那个位置都能匹配
\pP 其中的⼩写 p 是 property 的意思,表⽰ Unicode 属性,⽤于 Unicode 正表达式的前缀。
⼤写 P 表⽰ Unicode 字符集七个字符属性之⼀:标点字符。
其他六个是
L:字母;
M:标记符号(⼀般不会单独出现);
Z:分隔符(⽐如空格、换⾏等);
S:符号(⽐如数学符号、货币符号等);
N:数字(⽐如阿拉伯数字、罗马数字等);
C:其他字符
这个⽂本⽂档⼀⾏是⼀个字符,第⼀列是 Unicode 编码,第⼆列是字符名,第三列是 Unicode 属性, 以及其他⼀些字符信息。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论