Sample Code
String str = "a,b,c,,";
String[] ary = str.split(",");
// result 3
System.out.println(ary.length);
在 code review 的時候發現一個有趣的狀況,
在 split(",")
處理完, 預期結果應該是 5
, 然而實際上卻是 3
,
查了一下 API 發現 public String[] split(String regex)
要求的參數其實是 regrex express,
這有可能導致 IndexOutOfBoundException
, 建議改為
public String[] split(String regex, int limit)
limit
用來限制 array 的長度,
如果 limit > 0, 最終處理的 array 長度不會大於 limit, regex express 匹配的次數最多為 n - 1
次,
如果 limit < 0, regex express 會盡可能的處理匹配, 包含對 空字串
匹配的問題,
如果 limit = 0, regex express 會儘可能地處理匹配, 但會放棄處理 空字串
匹配的問題。
參考:API Doc
Sample Code
String str = "a,b,c,,";
String[] ary = str.split(",", -1);
// result 5
System.out.println(ary.length);
沒有留言:
張貼留言