时间:2021-05-19
一串字符串中有特殊符号,可能会影响到相关接口业务,所以需要把字符串中的特殊字符都过滤掉
百度上面搜索大部分处理方法是通过正则表达式, 他需要处理的特殊符号都写进正则表达式中去校验, 这种方式一眼看过去就非常别扭, 感觉不灵活, 万一需要过滤其他的又得临时加进去
如下所示
public static String stringFilter (String str){ String regEx="[\\u00A0\\s\"`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); return m.replaceAll("").trim(); }这种方式是网上普遍能搜索到的, 个人任务极其的low, 不推荐使用, 推荐使用下面这种
public static String romveSpecialChar(String str) { String regEx = "\\pP|\\pS|\\s+"; str = Pattern.compile(regEx).matcher(str).replaceAll("").trim(); return str; }这种方式就比较简洁, 中国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正则表达式处理特殊字符内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本教程旨在帮助你驾驭Java正则表达式,同时也帮助我复习正则表达式。什么是正则表达式?正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则
1、组成普通字符:普通字符串,没有特殊含义特殊字符:在正则表达式中具有特殊的含义正则表达式中常见的meta字符【特殊字符】2、POSIXBRE【基本】与ERE【
Java中正则表达式运用实例(参看java中正则表达式运用详解):测试代码packagetest;/***在String的matches()方法,split()
正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。
本文实例讲述了java正则表达式实现提取需要的字符并放入数组。分享给大家供大家参考,具体如下:这里演示Java正则表达式提取需要的字符并放入数组,即ArrayL