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

Java 字串處理實用工具類:替換、分割、全半角轉換完整實作

     編輯:Java 相關知識

StringUtil 工具類核心功能解析

本文整理自實務專案經驗,提供一個功能完整的 StringUtil 類別,涵蓋字串替換、智慧分割、全半角互轉等高頻操作,程式碼可直接落地專案。

1. 遞迴字串替換 replaceStr

標準 String.replace() 在某些舊版 JVM 行為不一,此處採用遞迴實作確保相容性:

public static String replaceStr(String source, String beRepStr, String repStr, String returnStr) {
    if (source.indexOf(beRepStr) < 0) return source;
    String head = source.substring(0, source.indexOf(beRepStr));
    String body = repStr + source.substring(source.indexOf(beRepStr) + beRepStr.length());
    return replaceStr(head + body, beRepStr, repStr, returnStr);
}

若來源字串不含目標子串,直接回傳原字串;否則切出頭段與尾段,替換後遞迴處理剩餘部分。

2. 智慧分割 getFields

自動偵測分隔符:預設空白鍵 \u0020,若發現 # 且位置在空白鍵之前,則改用 # 分割:

public static String[] getFields(String test, String sep) {
    sep = "\u0020";
    if (test.indexOf(sep) != -1) {
        if ((test.indexOf(sep) > test.indexOf("#")) && test.indexOf("#") != -1) sep = "#";
    } else { sep = "#"; }
    List flds = new ArrayList();
    if (sep.equals("\u0020")) {
        StringTokenizer st = new StringTokenizer(test.trim(), sep);
        while (st.hasMoreTokens()) flds.add(st.nextToken());
        return (String[]) flds.toArray(new String[st.countTokens()]);
    } else {
        return test.trim().split(sep);
    }
}

回傳 String[],相容舊版 StringTokenizer 與新版 split()。

3. 全半角互轉 BQchange / QBchange

利用 Unicode 碼位偏移量 65248 (0xFF00) 實作:

  • 半形→全形 (BQchange):位元組陣列第 3 byte != -1 時,第 2 byte -32、第 3 byte 設 -1。
  • 全形→半形 (QBchange):第 3 byte == -1 時,第 2 byte +32、第 3 byte 設 0。
public static final String BQchange(String QJstr) { /* 半形轉全形 */ }
public static final String QBchange(String QJstr) { /* 全形轉半形 */ }

主程式示範:

String bj = "#@$%^&*()";
String qj = "#?¥%……?*()";
System.out.println("半角轉全角:" + bj + " --> " + BQchange(bj));
System.out.println("全角轉半角:" + qj + " --> " + QBchange(qj));

4. 註解掉的 DBC2SBC 替代方案

原始碼中保留以 charCodeAt 計算偏移的 JavaScript 風格實作,供參考。

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