跳到主要内容

如何使用 JAVA 正规表示式移除特殊字元

· 2 分钟阅读
Eric Cheng

一个前同事写的旧案子,有个功能是产生档案供使用者下载,案子跑了几年都相安无事,而突然某笔资料一直是 exception,看 log 为产生档案失败,查了一下原因,发现是不合法的档名,简单将解法做个记录笔记

失败原因

程式会将资料库的某个栏位做为档名,但是使用者 key 了「6/7」这样的字,而档名是不容许特殊字元的

invalid char

解决方法

程式码如下:回传值就会将特殊字元滤掉了,问题解决

public static String romveSpecialChar(String str) {
String regEx = "\\p{P}|\\p{S}|\\p{Z}";
str = Pattern.compile(regEx).matcher(str).replaceAll("").trim();
return str;
}

简单说明

使用的是 Java 的正规表示式,大家可能比较看不懂的是 \\p{P}|\\p{S}|\\p{Z} 这是什么?

\\p{P} 其中的小写 p 是 property 的意思,表示 Unicode 属性,大写 P 表示 Unicode 字符集。

字符集截图如下

regex Unicode

完整说明可以参考:http://www.unicode.org/reports/tr18/



版權聲明

,轉載請註明出處
本文連結: https://tech.havocfuture.tw/blog/remove-special-char



這是 google 廣告