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

Java String 常用方法實戰大全:替換、切割、大小寫、修剪與長度

     編輯:Java 程式設計入門

前言

java.lang.String 是 Java 使用頻率最高的類別之一,也是不可變物件。掌握其核心 API 能大幅提升字串處理效率與可讀性。本文以實戰導向,分類整理 11 大常用方法,並附上完整可執行範例與輸出對照。

核心方法分類速查表

分類方法說明回傳型別
連接concat(String)尾部追加字串String
join(CharSequence, CharSequence...) (Java 8+)以分隔符連接多字串/集合String
替換replace(CharSequence, CharSequence)字面值替換(全部),不支援正則String
replaceAll(String regex, String)正則替換(全部)String
replaceFirst(String regex, String)正則替換(首次)String
切割/子字串substring(int beginIndex)從索引到結尾String
substring(int begin, int end)左閉右開區間 [begin, end)String
大小寫轉換toLowerCase() / toUpperCase()預設 Locale,或指定 LocaleString
toLowerCase(Locale) / toUpperCase(Locale)指定語系規則(如土耳其語 I/ı 處理)String
修剪trim()移除首尾空白字元(<= U+0020)String
長度length()字元數(UTF-16 code units)int
常駐池intern()放入/取得字串常量池引用String

完整可執行範例

public class StringMethodsDemo {
    public static void main(String[] args) {
        String str = "78454545855ksdjnf dnfdksf klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>";
        System.out.println("原始字串長度: " + str.length());
        System.out.println("原始字串: [" + str + "]");
        System.out.println();

        // 1. concat() - 字串連接
        str = str.concat(str);
        printStep(1, "concat()", str);

        // 2. intern() - 常駐池
        str = str.intern();
        printStep(2, "intern()", str);

        // 3. replace() - 字面值替換(全部)
        str = str.replace("8", "發財");
        printStep(3, "replace('8', '發財')", str);

        // 4. replaceAll() - 正則替換(全部)
        str = str.replaceAll("f", "阿彌陀佛");
        printStep(4, "replaceAll('f', '阿彌陀佛')", str);

        // 5. replaceFirst() - 正則替換(首次)
        str = str.replaceFirst("7", "七七四十九天");
        printStep(5, "replaceFirst('7', '七七四十九天')", str);

        // 6. substring(int) - 從索引 20 到結尾
        str = str.substring(20);
        printStep(6, "substring(20)", str);

        // 7. substring(int, int) - 區間 [25, 35)
        str = str.substring(25, 35);
        printStep(7, "substring(25, 35)", str);

        // 8. toLowerCase() - 轉小寫
        str = str.toLowerCase();
        printStep(8, "toLowerCase()", str);

        // 9. toUpperCase() - 轉大寫
        str = str.toUpperCase();
        printStep(9, "toUpperCase()", str);

        // 10. trim() - 修剪首尾空白
        str = str.trim();
        printStep(10, "trim()", str);

        // 11. length() - 長度
        int len = str.length();
        printStep(11, "length()", String.valueOf(len));
    }

    private static void printStep(int step, String method, String result) {
        System.out.printf("第 %2d 步 %s:%n%s%n%n", step, method, result);
    }
}

執行輸出對照

原始字串長度: 72
原始字串: [78454545855ksdjnf dnfdksf klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>]

第  1 步 concat():
[78454545855ksdjnf dnfdksf klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>78454545855ksdjnf dnfdksf klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>]

第  2 步 intern():
[78454545855ksdjnf dnfdksf klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>78454545855ksdjnf dnfdksf klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>]

第  3 步 replace('8', '發財'):
[7發財454545發財55ksdjnf dnfdksf klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>7發財454545發財55ksdjnf dnfdksf klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>]

第  4 步 replaceAll('f', '阿彌陀佛'):
[7發財454545發財55ksdjn阿彌陀佛 dn阿彌陀佛dks阿彌陀佛 klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>7發財454545發財55ksdjn阿彌陀佛 dn阿彌陀佛dks阿彌陀佛 klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>]

第  5 步 replaceFirst('7', '七七四十九天'):
[七七四十九天發財454545發財55ksdjn阿彌陀佛 dn阿彌陀佛dks阿彌陀佛 klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>7發財454545發財55ksdjn阿彌陀佛 dn阿彌陀佛dks阿彌陀佛 klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>]

第  6 步 substring(20):
[djn阿彌陀佛 dn阿彌陀佛dks阿彌陀佛 klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>7發財454545發財55ksdjn阿彌陀佛 dn阿彌陀佛dks阿彌陀佛 klkADE TGTH eiru oaK L!@@$#%$^*&(*()()><?<>>>]

第  7 步 substring(25, 35):
[ADE TGTH e]

第  8 步 toLowerCase():
[ade tgth e]

第  9 步 toUpperCase():
[ADE TGTH E]

第 10 步 trim():
[ADE TGTH E]

第 11 步 length():
[10]

進階補充:Java 11+ 新增實用方法

方法說明範例
isBlank()判斷是否為空白(含空字串、空白字元)" \t\n".isBlank() → true
strip()Unicode 感知修剪(比 trim() 更完整)"\u2000Hello\u2000".strip() → "Hello"
stripLeading() / stripTrailing()單側 Unicode 修剪-
repeat(int)重複字串 N 次"ab".repeat(3) → "ababab"
lines()按行分割回傳 Stream"a\nb\nc".lines().toList() → [a, b, c]
indent(int) (Java 12+)每行縮進/減縮"a\nb".indent(2) → " a\n b"
transform(Function) (Java 12+)鏈式轉換s.transform(String::toUpperCase).transform(s -> "[" + s + "]")

效能提醒

  • 頻繁修改用 StringBuilder:String 不可變,迴圈中 += 會產生大量中間物件。
  • replaceAll 編譯正則有開銷:同一正則重複使用時,預編譯 Pattern 並用 matcher.replaceAll()。
  • substring 在 Java 7+ 為 O(1) 複製引用(不再共享 char[]),但極長字串取小段仍保留原陣列引用,可能阻礙 GC,必要時 new String(sub) 強制複製。

總結

String API 設計遵循「不可變、功能單一、鏈式呼叫」原則。實務上建議:

  1. 簡單拼接用 +(編譯器優化為 StringBuilder)
  2. 複雜構建用 StringBuilder/StringJoiner
  3. 正則替換預編譯 Pattern
  4. Java 11+ 專案優先用 isBlank()/strip()/repeat()

熟練這 11+7 個方法,應付 95% 字串處理場景綽綽有餘。

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