日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java字符串替换空格符_特殊的空格(Java无法替换字符串中的空格)转

發布時間:2025/3/15 java 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java字符串替换空格符_特殊的空格(Java无法替换字符串中的空格)转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、自己的問題

先說一下自己碰到的問題,自己在本地建立了一個json文件,并且把它格式化了(為了看著美觀);然后在Java后臺中去讀取(使用BufferedReader的readline方法),但是讀取后的Json字符串總是帶著一部分空白,使用了多種替換方式(trim,空格,換行符,制表符等)都無法消除空格,導致后續創建json對象時提示錯誤。

原因:是因為這個讀取到的不是Java常見的空格字符,而是特殊的空格(ASCII值160,嚴格來說這個是擴展ASCII值的部分,因為原生ASCII最大只到127),因此不能使用常規的替換方式。

具體處理見下文(轉載的博客,為了加深記憶,特意又放到自己的博客中)。

二、處理辦法

最近遇到個問題,在頁面的搜索框輸入帶有空格的字符串時,總是無法從db中搜索出來對應的數據,于是將db里的空格復制出來,發現其ASCII碼值為160,這才知道,原來ASCII碼中除了32之外還有160這個特殊的空格。下邊是查看字符對應ASCII值的邏輯:

1 final char c1 = ' '; //db里的空格

2 final char c2 = ' '; //手動輸入的空格

3 System.out.println((int)c1); //160

4 System.out.println((int)c2); //32

平時我們用鍵盤輸入的空格的ASCII值是32,而這個ASCII值為160的空格,其實是不間斷空格(non-breaking space),是不是從來沒聽說過這東東?其實你平時一定也用過很多次的,就是頁面上的?所產生的空格。

不間斷空格non-breaking space的縮寫正是nbsp。這中空格的作用就是在頁面換行時不被打斷,如下:

1 頁面某一行的末尾是一個人名Zhang Xiaoming

我們希望在換行時人名不會被打斷,導致Zhang 在第一行末尾,而Xiaoming跑到第二行開頭,而是保持完整的人名在同一行的末尾,于是就有了不間斷空格。(在word中也有這種空格的使用)

如果使用了平常的空格,就會被頁面壓縮,變成下邊這樣

1 頁面某一行的末尾是一個人名Zhang2 Xiaoming

問題

但是不間斷空格有個問題,就是它無法被trim()所裁剪,也無法被正則表達式的\s所匹配,也無法被StringUtils的isBlank()所識別,也就是說,無法像裁剪尋常空格那樣移除這個不間斷空格。

我們可以利用不間斷空格的Unicode編碼來移除它,其編碼為\u00A0。

解決辦法如下:

1 replace("\u00A0", "")2 replaceAll("\\u00A0+", "") //這是正則表達式的寫法

3

4 String str = "aacsdfe "; //包含了不間斷空格的字符串

5 str = str.replace("\u00A0", "");6 str = str.replaceAll("\\u00A0+", "");

————————————————

以上內容非個人原創。

附原文鏈接:https://blog.csdn.net/lewky_liu/article/details/79353151

總結

以上是生活随笔為你收集整理的java字符串替换空格符_特殊的空格(Java无法替换字符串中的空格)转的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。