看下圖所示,兩個空字符串不相等
因為str中有不可兼得特殊字符,可以在debug中將str的值復制出來,然后粘貼到雙引號中們就可以看到這個字符的真面目,如下圖所示:
\uFEFF為控制字符,名為"零寬不折行空格(Zero Width No-Break Space)",此外,類似的不可見字符還有\u202A(從左至右嵌入)、\u202E(從右至左強制)等控制字符
那我們事怎么遇到這些控制字符的呢?
在讀取文件或者從某文件屬性中直接復制路徑經常會遇到這種問題
在開發中可以對獲得的字符串進行以下處理,來刪除這些控制字符:網上很多說使用正則\\p{Cntrl}進行替換,經過測試並不起作用,而是用朋友告訴我的\\p{C}
String str2 = str1.replaceAll("\\p{C}", "");
System.out.println("".equals(str2));
就是一些特殊的Unicode字符,如果不確定,可先判斷長度是否一樣:
推薦字符查詢網址查詢網址: