Java處理不可見(jiàn)特殊字符要點(diǎn)解析
看下圖所示,兩個(gè)空字符串不相等
因?yàn)閟tr中有不可兼得特殊字符,可以在debug中將str的值復(fù)制出來(lái),然后粘貼到雙引號(hào)中們就可以看到這個(gè)字符的真面目,如下圖所示:
uFEFF為控制字符,名為'零寬不折行空格(Zero Width No-Break Space)',此外,類(lèi)似的不可見(jiàn)字符還有u202A(從左至右嵌入)、u202E(從右至左強(qiáng)制)等控制字符
那我們事怎么遇到這些控制字符的呢?
在讀取文件或者從某文件屬性中直接復(fù)制路徑經(jīng)常會(huì)遇到這種問(wèn)題
在開(kāi)發(fā)中可以對(duì)獲得的字符串進(jìn)行以下處理,來(lái)刪除這些控制字符:網(wǎng)上很多說(shuō)使用正則p{Cntrl}進(jìn)行替換,經(jīng)過(guò)測(cè)試并不起作用,而是用朋友告訴我的p{C}
String str2 = str1.replaceAll('p{C}', '');
System.out.println(''.equals(str2));
就是一些特殊的Unicode字符,如果不確定,可先判斷長(zhǎng)度是否一樣:
推薦字符查詢網(wǎng)址查詢網(wǎng)址:
https://unicode-table.com/cn/
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 在Android中使用WebSocket實(shí)現(xiàn)消息通信的方法詳解2. python matplotlib:plt.scatter() 大小和顏色參數(shù)詳解3. Yii2.0引入CSS,JS文件方法4. JSP數(shù)據(jù)交互實(shí)現(xiàn)過(guò)程解析5. Python importlib動(dòng)態(tài)導(dǎo)入模塊實(shí)現(xiàn)代碼6. vue使用webSocket更新實(shí)時(shí)天氣的方法7. 淺談python出錯(cuò)時(shí)traceback的解讀8. android studio 打包自動(dòng)生成版本號(hào)與日期,apk輸入路徑詳解9. Nginx+php配置文件及原理解析10. JavaMail 1.4 發(fā)布
