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

J2ME 實用類:StringTokenizer 字符串分詞輕量級用法

     編輯:J2ME

前言

J2ME 標準庫精簡,java.util.StringTokenizer 是僅有的字符串分割工具 (無 String.split()、無正則)。本文展示其核心用法與 J2ME 專項注意點。

類簽名

public class StringTokenizer implements Enumeration {
    public StringTokenizer(String str);
    public StringTokenizer(String str, String delim);
    public StringTokenizer(String str, String delim, boolean returnDelims);
    public boolean hasMoreTokens();
    public String nextToken();
    public String nextToken(String delim);
    public int countTokens();
}

核心用法示例

// 1. 默認分隔符:空白字符 (空格、制表、換行、換頁)
StringTokenizer st1 = new StringTokenizer("name=value;type=int");
while (st1.hasMoreTokens()) {
    System.out.println(st1.nextToken());
}
// 輸出:name=value;type=int (整個字符串,因無空白)

// 2. 自定義分隔符
StringTokenizer st2 = new StringTokenizer("name=value;type=int", "=;");
while (st2.hasMoreTokens()) {
    System.out.println(st2.nextToken());
}
// 輸出:name / value / type / int

// 3. 返回分隔符本身
StringTokenizer st3 = new StringTokenizer("a,b,c", ",", true);
while (st3.hasMoreTokens()) {
    System.out.println("[" + st3.nextToken() + "]");
}
// 輸出:[a] [,] [b] [,] [c]

// 4. 動態改變分隔符
StringTokenizer st4 = new StringTokenizer("key1=val1;key2=val2");
String token;
while ((token = st4.nextToken("=;")) != null) { // 需配合 hasMoreTokens
    // 處理 token
}

J2ME 專項注意點

  • 不可變分隔符集: 構造後分隔符固定,若需多種分隔邏輯需創建多個實例。
  • 無正則支援: 分隔符僅為字符集合,每個字符獨立作為分隔符,「=;」視為兩個分隔符 '=' 和 ';',而非子串 "=;"。
  • 性能: 輕量級,適合 J2ME 環境;但頻繁創建對象會產生垃圾,熱路徑建議複用或手寫解析。
  • 空 Token: 連續分隔符不產生空 Token (行為類同 split("\\s+")),若需保留空字段需自行實現。
  • 計數器: countTokens() 為 O(n) 掃描,慎用於大字符串循環條件中。

替代方案對比

總結

StringTokenizer 是 J2ME 字符串分詞的「標準輕兵器」。掌握其分隔符為字符集、不支援正則、不產生空 Token三大特性,配合 hasMoreTokens/nextToken 標準枚舉模式,足以應對 90% 簡單解析場景 (配置文件、協議字段、CSV 等)。複雜結構化數據請上手寫解析器或引入輕量庫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方案優點缺點
StringTokenizer標準庫、零依賴、API 簡單功能弱、無正則、分隔符為字符集
手寫解析 (indexOf/substring)完全可控、零對象創建、效能最高代碼量大、易出邊界錯誤
第三方庫 (如 kXML, nanoxml)支援 XML/JSON 結構化解析增大 JAR 體積、學習成本