JDK 1.4+ 提供 String.split(regex),但 MIDP 1.0/2.0 皆未包含此方法。自行實作輕量級分割工具,支援任意分隔字串(非正則),效能足夠應付 J2ME 典型場景(解析 CSV、協定封包、設定檔)。
indexOf(separator) 尋找分隔字串位置。substring(start, found) 取得子字串存入 Vector。start = found + separator.length() 繼續搜尋。Vector 轉為 String[] 回傳。public static String[] split(String original, String separator) {
if (original == null || separator == null || separator.length() == 0)
return new String[] { original }; // 防呆
Vector v = new Vector();
int start = 0;
int pos;
while ((pos = original.indexOf(separator, start)) != -1) {
v.addElement(original.substring(start, pos));
start = pos + separator.length();
}
v.addElement(original.substring(start)); // 尾段
String[] result = new String[v.size()];
for (int i = 0; i < result.length; i++)
result[i] = (String) v.elementAt(i);
return result;
}
String csv = "張三,25,台北市,工程師";
String[] fields = split(csv, ",");
// fields = {"張三","25","台北市","工程師"}
String proto = "CMD|LOGIN|user01|pass123";
String[] parts = split(proto, "|");
// parts = {"CMD","LOGIN","user01","pass123"}
Vector 動態擴容會產生暫時物件,若分割極長字串(>10 KB)建議預估段數預先 new Vector(estimated)。','),可改寫為 char 版本進一步優化。若專案確需簡單正則(如 \\s+、[;,]),可整合 RegexpME(~15 KB),但對大多數資料分割需求,上述純字串分割已足夠。
自製 split() 只需 20 行程式碼,即可讓 J2ME 專案擁有標準 Java 同等級的字串分割能力,零相依、極輕量。