java.lang.String.split() 是 Java 中將字符串分割為子字符串數組的核心方法。掌握其參數用法與正則表達式特性,能避免許多開發中的「隱形坑」。
public String[] split(String regex, int limit)
public String[] split(String regex)
String str = "Java string split test";
String[] arr = str.split(" ");
// 輸出:Java / string / split / test
String str = "Java string split test";
String[] arr = str.split(" ", 2);
// 輸出:Java / string split test
點號 . 在正則中代表「任意字符」,直接使用 split(".") 會導致無輸出。
String ip = "192.168.0.1";
// 錯誤:String[] parts = ip.split("."); // 結果為空數組
// 正確:雙重轉義
String[] parts = ip.split("\\.");
// 輸出:192 / 168 / 0 / 1
使用 | 作為正則「或」運算符,需注意轉義:
String address = "上海^上海市@闵行區#吳中路";
// ^、@、# 皆為特殊字符,需轉義
String[] arr = address.split("\\^|@|#");
// 結果:[上海, 上海市, 闵行區, 吳中路]
String str = "第一句。第二句!第三句:第四句;第五句。";
String regEx = ":|。|!|;";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
// 後續可用 m.split() 或迭代匹配
.、|、*、+ 等在正則有特殊含義,Java 字符串中需寫成 \\.、\\| 等。\ 作為分隔符:Java 字符串中 \\ 代表單個反斜杠,故 split("\\\\");字面量寫法 "a\\\\b\\\\c"。str.split(" |-|#") 可同時按空格、連字符、井號分割。split(","),無需正則開銷。StringTokenizer 或手寫解析,避免正則性能損耗。