问题描述
- 关于java 的split,求大神解决一下啊
-
代码 ",,,,".split(',')我想得到Array('','','','')
但结果我却得到了Array()有什么办法能得到我想要的结果呢。。。
解决方案
可以使用含有两个参数的split方法,如",,,,".split(",", -1),你调用的那个含有一个参数的方法默认实现如下:
public String[] split(String regex) {return split(regex, 0);}
public String[] split(String regex, int limit)
第二个参数(limit):
1. 若是正数n,返回数组的长度最大为n(如传入5,反回的数组长度为最大值5,传100也将是5)
2. 若是负数,如-1,则返回数组的长度尽可能地大(就本问题而言,推荐采用这种方法)
3. 若是0,它拆分后会移除后面的空字符串,内部大致实现:先拆分得到一个list,resultSize=list.size(),从末尾resultSize-1开始往前循环遍历,若list.get(resultSize-1)为空字符串,使resultSize-=1,直到遇到非空字符串或resultSize=0为止;然后再调用list.subList(0, resultSize).toArray(new String[0])得到结果数组
因此",,,,".split(",")将先得到一个含有5个空字符串的列表,即resultSize=5,然后从后往前依次检查,遇到一个空字符串,就将resultSize-=1,由于5个元素都是空字符串,最终resulSize=0,子列表为空,数组也为空了
对第3种“奇葩”的做法,都不知道被人骂过多少次了......
解决方案二:
split的字符是作为界符的,本身不会出现在拆分结果中。
如果你要拆分字符串的每个字符,用toCharArray
解决方案三:
",,,,".split(",",100)
解决方案四:
用这样
char[] c=",,,,".toCharArray();
for(int i=0;i<c.length;i++){
System.out.println(c[i]);
}
解决方案五:
看下 ",,,,".split(',').length 的长度
解决方案六:
长度自己写死吧吧,split默认忽略末尾的空字段的,或者可以算出,的个数然后再在末尾拼足够的空字符吧