1. 程式人生 > 程式設計 >Java處理不可見特殊字元要點解析

Java處理不可見特殊字元要點解析

看下圖所示,兩個空字串不相等

Java處理不可見特殊字元要點解析

因為str中有不可兼得特殊字元,可以在debug中將str的值複製出來,然後貼上到雙引號中們就可以看到這個字元的真面目,如下圖所示:

Java處理不可見特殊字元要點解析

\uFEFF為控制字元,名為"零寬不折行空格(Zero Width No-Break Space)",此外,類似的不可見字元還有\u202A(從左至右嵌入)、\u202E(從右至左強制)等控制字元

那我們事怎麼遇到這些控制字元的呢?

在讀取檔案或者從某檔案屬性中直接複製路徑經常會遇到這種問題

在開發中可以對獲得的字串進行以下處理,來刪除這些控制字元:網上很多說使用正則\\p{Cntrl}進行替換,經過測試並不起作用,而是用朋友告訴我的\\p{C}

Java處理不可見特殊字元要點解析

String str2 = str1.replaceAll("\\p{C}","");

System.out.println("".equals(str2));

就是一些特殊的Unicode字元,如果不確定,可先判斷長度是否一樣:

Java處理不可見特殊字元要點解析

推薦字元查詢網址查詢網址:

https://unicode-table.com/cn/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。