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

J2ME String 功能增強:實作 split 分割字串工具方法

     編輯:J2ME

背景

JDK 1.4+ 引入 String.split(regex),但 MIDP 1.0/2.0 均未提供。實際開發常需解析 CSV、通訊協定、設定檔等分隔字串,需自行實作。

實作邏輯

  1. 使用 indexOf(String, fromIndex) 尋找分隔字串位置。
  2. 以 substring(start, end) 取得片段,存入 Vector。
  3. 迴圈直到 indexOf 回傳 -1(不再出現)。
  4. 補上最後一段,轉為 String[] 回傳。

完整工具方法

/**
 * 分割字串,支援多字元分隔符。
 * @param original 待分割字串
 * @param regex    分隔字串(非正則,純字面匹配)
 * @return 分割後字串陣列
 */
private static String[] split(String original, String regex) {
    int startIndex = 0;
    Vector v = new Vector();
    int index = 0;

    startIndex = original.indexOf(regex);
    while (startIndex < original.length() && startIndex != -1) {
        String token = original.substring(index, startIndex);
        v.addElement(token);
        index = startIndex + regex.length();
        startIndex = original.indexOf(regex, index);
    }
    // 尾段
    v.addElement(original.substring(index));

    String[] result = new String[v.size()];
    for (int i=0;i

測試案例

String test = "apple,banana,orange,grape";
String[] fruits = split(test, ",");
// fruits = {"apple","banana","orange","grape"}

String multi = "A::B::C";
String[] parts = split(multi, "::");
// parts = {"A","B","C"}

String edge = ",leading,trailing,";
String[] ed = split(edge, ",");
// ed = {"","leading","trailing",""}  // 保留空欄位

注意事項與改進方向

  • 非正則:參數 regex 為純字面分隔符,不支援正則表達式。如需正則,請整合 kxml 或自行實作 NFA。
  • 效能:substring 在 MIDP 多為共享底層 char[](Copy-on-Write),記憶體開銷極低。
  • 空分隔符:若 regex=="" 會導致無限迴圈,建議開頭檢查 if (regex.length()==0) return new String[]{original};。
  • 靜態工具類:建議放入 StringUtils 類別,配合 join、trimAll 等常用方法構建完整字串工具庫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved