首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 字符串去除空白字符完全指南:trim、replace、正則最佳實踐

     編輯:Java 相關知識

常見需求與對應方法

需求方法示例說明
去除首尾空白trim() (Java 11+ strip())" a b ".trim() → "a b"strip() 符合 Unicode 空白字符定義,推薦
去除**所有**空格 (僅空格 ' ')replace(" ", "")" a b ".replace(" ", "") → "ab"字符級替換,高性能,不支持製表符等
去除**所有**空白字符 (空格、\t、\n、\r 等)replaceAll("\\s+", "")"a\tb\nc".replaceAll("\\s+", "") → "abc"正則 \s 匹配所有 Unicode 空白,+ 合併連續
去除首尾並壓縮中間多空白為單空格strip().replaceAll("\\s+", " ")" a b ".strip().replaceAll("\\s+", " ") → "a b"規範化字符串常用

代碼演示

public class SpaceRemover {
    public static void main(String[] args) {
        String s = "  Hello\tWorld\nJava  ";
        System.out.println("原始: [" + s + "]");
        System.out.println("trim: [" + s.trim() + "]");
        System.out.println("strip: [" + s.strip() + "]");
        System.out.println("replace空格: [" + s.replace(" ", "") + "]");
        System.out.println("replaceAll\\s: [" + s.replaceAll("\\s+", "") + "]");
        System.out.println("規範化: [" + s.strip().replaceAll("\\s+", " ") + "]");
    }
}

輸出結果

原始: [  Hello	World
Java  ]
trim: [Hello	World
Java]
strip: [Hello	World
Java]
replace空格: [Hello	World
Java]
replaceAll\s: [HelloWorldJava]
規範化: [Hello World Java]

性能對比 (百萬次循環)

// trim/strip          : ~50 ms  (原生優化)
// replace(" ", "")    : ~80 ms  (字符級快速路徑)
// replaceAll("\\s+", "") : ~300 ms (正則引擎開銷)
// replaceAll("\\s+", " ") : ~350 ms

最佳實踐建議

  1. **首尾去空白**:Java 11+ 用 strip(),舊版用 trim()。
  2. **只去空格 ' '** 用 replace(" ", ""),最快且語義明確。
  3. **去所有空白** 用 replaceAll("\\s+", ""),預編譯 Pattern 可復用提速。
  4. **高性能場景** (如解析器) 手寫循環遍歷 char[] 複製非空白字符,避免對象創建。
  5. **區分「空格」與「空白」**:需求文檔常混淆,確認是否包含 \t \n \r \f 等。

避坑指南

  • replaceAll 參數是正則,**$ . * + ? [ ] ( ) { } | \ ^** 等特殊字符需轉義。
  • String.replace(CharSequence, CharSequence) (Java 5+) **不按正則**,直接字面替換,替換單字符用 replace(' ', '') 更快。
  • 字符串不可變,**每次調用都產生新對象**,大量處理用 StringBuilder 或字符數組。

選對方法,代碼既快又清晰。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved