【編程靈異事件】replaceAll() 無法替換空白符

問題發現

筆者在JavaWeb開發時,由於從數據庫讀取的文章段落存在空格,所有筆者覺得用以下方法將其消除:
在這裏插入圖片描述
這很合邏輯吧,正則表達式 \s+ 用於匹配一個或多個空白符,按理來說所有的空格都會被替換成 9 ,然而結果是下面這樣的:
在這裏插入圖片描述

嘗試解決

於是猜想,可能是其他空白符導致的,於是嘗試替換   (html空格), \n (java編程常用換行符), \r\n (windows換行符) 都行不通。

最後決定控制檯輸出一下,這幾個隱形字符的ASCII碼,結果如下:
在這裏插入圖片描述
如圖,段首的空白符替換之後,文字前面還存在空格。根據輸出的ASCII碼值可以通過查表的值,前面兩個字符分別爲 空格 換行 。那麼問題來了,後面兩個是什麼?

問題解決

筆者直接把 12288 這串數字往百度一貼,原來早有前人也遇到了這個問題,得知這串數字表示的是 全角空格 ,而平時編程都是使用英文半角的空格,所以用"\s+"替換失敗。

解決辦法就是使用,先把全角空格替換爲半角空格,再用上面說的方法去替換。

String s=str.replace((char)12288," ");

s=s.replaceAll("\\s+","");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章