最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中使用trim()無法去除空格的解決方法

 更新時間:2025年12月26日 08:55:36   作者:.貓的樹  
這篇文章主要介紹了Java中使用trim()方法無法去除空格的問題,并分析了原因,文章提出了兩種解決方案:使用正則表達式替換和使用String.strip()方法,需要的朋友可以參考下

問題描述

今天遇到一個比較怪異的問題,這里簡單記錄一下:

有個需求是需要去掉字符串后面的空格,我這里使用的是String.trim()

public class Demo1 {
  public static void main(String[] args) {
    String s1 = "空格測試 ";
    System.out.println(s1.trim());
    // 空格測試
  }
}

到這里是不是完全沒問題,但是今天發(fā)現(xiàn)輸入的數(shù)據(jù)明明帶了空格,結果還是沒有去掉,沒有得到想要的結果。

原因分析:

首先,使用trim方法去掉首位空格是沒有問題的。那為什么會出現(xiàn)上述問題呢?

查閱資料后發(fā)現(xiàn),trim方法只能去掉字符串中的ASCII值為32的空格,即半角空格

全角和半角

在輸入法中存在全角和半角字符的概念,比如說“逗號”存在“全角逗號和半角逗號”,體現(xiàn)在Unicode中就是兩個不同的碼位。

全角字符

全角字符占3字節(jié),ASCII值為12288,全角字符不能被trim

ASCII -160 特殊空格

該空格為不間斷空格(non-breaking space),占2個字節(jié),即前端頁面上的 ,同樣也不能被trim

也就是說,trim或者replace只能去掉ASCII值為32的空格,而ASCII值為160或全角的空格是無法通過replace或者trim處理的

解決方案:

方法一:使用正則表達式

ASCII編碼是160的空格,Unicode對應是\u00A0,使用replace+UNICODE編碼\u00A0替換,全角空格(\u3000),使用replace方法+全角空格字符替換,普通空格,使用replace方法+\s替換,正則表達式.replaceAll("([ ]|\\s|\\u00A0)+","")

如下:

public class Demo1 {
  public static void main(String[] args) {
 		String s2 = "全角空格測試 !!";
        System.out.println(s1.replaceAll("([ ]|\\s|\\u00A0)+",""));
        // 全角空格測試!!
  }
}

方法二:使用String.strip()

我這里的問題是全角空格導致的,所以可以使用String.strip()去除字符串前后的“全角和半角”空白字符

public class Demo1 {
  public static void main(String[] args) {
    String s3 = "吃了沒\u3000";
    System.out.println(s3.trim().length());
    System.out.println(s3.strip().length());
    // 4 3
    System.out.println(s3.strip());
    // "吃了沒"
  }

注意:JDK11中引入String.strip()

到此這篇關于Java中使用trim()無法去除空格的解決方法的文章就介紹到這了,更多相關Java trim()無法去除空格內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java的三種代理模式簡述

    Java的三種代理模式簡述

    這篇文章主要簡述Java的三種代理模式,java的代理模式主要包括靜態(tài)代理、動態(tài)代理、Cglib代理,感興趣的小伙伴可以參考下面文章的具體內容
    2021-09-09
  • Java如何在臨界區(qū)中避免競態(tài)條件

    Java如何在臨界區(qū)中避免競態(tài)條件

    這篇文章主要介紹了Java如何在臨界區(qū)中避免競態(tài)條件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • SpringBoot@Aspect 打印訪問請求和返回數(shù)據(jù)方式

    SpringBoot@Aspect 打印訪問請求和返回數(shù)據(jù)方式

    這篇文章主要介紹了SpringBoot@Aspect 打印訪問請求和返回數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java實現(xiàn)滑動驗證碼的示例代碼

    Java實現(xiàn)滑動驗證碼的示例代碼

    這篇文章主要介紹了Java實現(xiàn)滑動驗證碼的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • SpringBoot3 Spring WebFlux簡介(推薦)

    SpringBoot3 Spring WebFlux簡介(推薦)

    SpringWebFlux是Spring Framework 5中引入的響應式Web框架,用于支持非阻塞異步通信和響應式流處理,與傳統(tǒng)的SpringMVC相比,WebFlux提供了完全異步非阻塞的編程模型,適用高并發(fā)、微服務架構和實時數(shù)據(jù)流,本文介紹SpringBoot3 Spring WebFlux簡介,感興趣的朋友一起看看吧
    2024-10-10
  • spring啟動后保證創(chuàng)建的對象不被垃圾回收器回收

    spring啟動后保證創(chuàng)建的對象不被垃圾回收器回收

    最近看到一個問題是,spring在啟動后如何保證創(chuàng)建的對象不被垃圾回收器回收?。所以本文結合jvm的垃圾回收機制和spring中的源代碼做出自己的一點猜測。有需要的朋友們可以參考借鑒。
    2016-09-09
  • Java線程之鎖對象Lock-同步問題更完美的處理方式代碼實例

    Java線程之鎖對象Lock-同步問題更完美的處理方式代碼實例

    這篇文章主要介紹了Java線程之鎖對象Lock-同步問題更完美的處理方式代碼實例,還是挺不錯的,這里分享給大家,需要的朋友可以參考。
    2017-11-11
  • Java回調機制解讀

    Java回調機制解讀

    本文主要介紹了Java回調機制的相關知識,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Java線程之間通信的幾種方式詳解

    Java線程之間通信的幾種方式詳解

    在 Java 中,線程之間的通信是通過共享內存模型來實現(xiàn)的,線程通過共享的對象和變量來交換數(shù)據(jù),為了確保線程間通信的正確性,Java 提供了一系列機制來實現(xiàn)線程安全、同步和通信,以下是常用的幾種線程間通信的方式,以及它們的使用方法和場景,需要的朋友可以參考下
    2025-03-03
  • Java中關于size()>0?和isEmpt()的性能考量

    Java中關于size()>0?和isEmpt()的性能考量

    這篇文章主要介紹了Java中關于size()>0?和isEmpt()性能考量,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評論

梨树县| 新巴尔虎右旗| 湘西| 环江| 河池市| 波密县| 蒲江县| 太仓市| 古蔺县| 女性| 禄丰县| 寿光市| 措美县| 寿宁县| 出国| 喀喇沁旗| 茶陵县| 子洲县| 五台县| 宿迁市| 新乐市| 龙海市| 萝北县| 厦门市| 郸城县| 上林县| 怀集县| 三亚市| 社旗县| 平果县| 大同市| 福鼎市| 隆化县| 中宁县| 蒲江县| 霸州市| 临清市| 南昌市| 孝感市| 宿迁市| 临桂县|