6 回答

TA貢獻(xiàn)2041條經(jīng)驗 獲得超4個贊
可以使用含有兩個參數(shù)的split方法,如",,,,".split(",", -1),你調(diào)用的那個含有一個參數(shù)的方法默認(rèn)實現(xiàn)如下:
public String[] split(String regex) {return split(regex, 0);}
public String[] split(String regex, int limit)
第二個參數(shù)(limit):
1. 若是正數(shù)n,返回數(shù)組的長度最大為n(如傳入5,反回的數(shù)組長度為最大值5,傳100也將是5)
2. 若是負(fù)數(shù),如-1,則返回數(shù)組的長度盡可能地大(就本問題而言,推薦采用這種方法)
3. 若是0,它拆分后會移除后面的空字符串,內(nèi)部大致實現(xiàn):先拆分得到一個list,resultSize=list.size(),從末尾resultSize-1開始往前循環(huán)遍歷,若list.get(resultSize-1)為空字符串,使resultSize-=1,直到遇到非空字符串或resultSize=0為止;然后再調(diào)用list.subList(0, resultSize).toArray(new String[0])得到結(jié)果數(shù)組
因此",,,,".split(",")將先得到一個含有5個空字符串的列表,即resultSize=5,然后從后往前依次檢查,遇到一個空字符串,就將resultSize-=1,由于5個元素都是空字符串,最終resulSize=0,子列表為空,數(shù)組也為空了
對第3種“奇葩”的做法,都不知道被人罵過多少次了......

TA貢獻(xiàn)1818條經(jīng)驗 獲得超11個贊
split的字符是作為界符的,本身不會出現(xiàn)在拆分結(jié)果中。
如果你要拆分字符串的每個字符,用toCharArray

TA貢獻(xiàn)2037條經(jīng)驗 獲得超6個贊
用這樣
char[] c=",,,,".toCharArray();
for(int i=0;i<c.length;i++){
System.out.println(c[i]);
}

TA貢獻(xiàn)1875條經(jīng)驗 獲得超5個贊
長度自己寫死吧吧,split默認(rèn)忽略末尾的空字段的,或者可以算出,的個數(shù)然后再在末尾拼足夠的空字符吧
添加回答
舉報