跳至主要内容

如何使用 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 廣告