詳細說明 String.split() 的 limit 參數行為、特殊字元跳脫、多重分隔符正則寫法,以及 StringTokenizer 計算分隔符數量的用法。
String s = "01111:aa:哈哈";
s.split(":"); // ["01111", "aa", "哈哈"] - 尾端空字串捨棄
s.split(":", -1); // ["01111", "aa", "哈哈"] - 保留尾端空字串 (若有)
s.split(":", 1); // ["01111:aa:哈哈"] - 限制最多 1 段,不分割
String s = "bulktree.oakertree.laoshulin";
String ss = "bulktree|oakertree|laoshulin";
String sss = "bulktree.oakertree|laoshulin";
s.split("\\."); // 點號需雙重跳脫
ss.split("\\|"); // 管線符需跳脫
sss.split("\\.|\\|"); // 多重分隔符用 | 連接
String s = "I am a student,bulktree";
StringTokenizer st = new StringTokenizer(s); // 預設空白分隔
st.countTokens(); // 回傳 token 數量 (分隔符數量+1)
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
// 輸出: I / am / a / student,bulktree (逗號非預設分隔符)
StringTokenizer 屬舊版 API,不支援正則表達式,新代碼建議使用 split()。split("") 在 Java 8+ 會產生首位空字串,Java 7 不會,跨版本需測試。