java正则表达式处理特殊字符
java正则表达式处理特殊字符
前言
一串字符串中有特殊符号,可能会影响到相关接口业务,所以需要把字符串中的特殊字符都过滤掉
百度上面搜索大部分处理方法是通过正则表达式, 他需要处理的特殊符号都写进正则表达式中去校验, 这种方式一眼看过去就非常别扭, 感觉不灵活, 万一需要过滤其他的又得临时加进去
解决方案
如下所示
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 正则表达式标准(可以找到所有的子属性),可参考
/
各 Unicode 字符属性的定义,可以用一看看某个字符具有什么属性。可参考
.txt
这个文本文档一行是一个字符,第一列是 Unicode 编码,第二列是字符名,第三列是 Unicode 属性, 以及其他一些字符信息。
最新文章
- Java 接口+继承
- Dubbo之——Dubbo服务集群
- 《Microsoft SQL Server入门教程》第03篇 示例数据库和示例表
- 5个超好用的自媒体网站,免费用
- 关于如何在idea中设置文档注释模板
- [OpenGL] 小游戏
- 微信小程序选项卡数组列表单项选择切换效果
- java线性规划计算最优解算法
- 软件测试方法的分类及工具推荐
- CDQ分治 模板
- 【EmguCV】EmguCV各种调用
- 目标检测详解
- 概率论:乘法定理、全概率公式以及贝叶斯定理
- 强制横屏或者竖屏
- 分部积分法的一些特殊方法
- 免杀的N种姿势
- 云端漫步
- 视频编解码的新突破
- ROS2 基础概念 话题
- Android获取系统的硬件信息、系统版本以及如何检测ROM类型