java关于split分割字符串,空的字符串不能得到的问题
?
- class?T?{ ??
- ??public?static?void?main(String?args[])?{ ??
- ????String?num[]?=?new?String[11]; ??
- ????String?sLine?=?"101494|360103660318444|2008/06/17|周润英|1292.0|3085.76|2778.28|912.91|106.0|||"; ??
- ????num?=?sLine.split("\\|"); ??
- ????int?row?=?1; ??
- ????for?(String?s?:?num)?{ ??
- ??????System.out.println(row+++"="+s); ??
- ????} ??
- ??} ??
- }??
最有有三个|||,运行结果为?
1=101494?
2=360103660318444?
3=2008/06/17?
4=周润英?
5=1292.0?
6=3085.76?
7=2778.28?
8=912.91?
9=106.0?
查看API,有一个?
?
- public?String[]?split(String?regex,?int?limit);??
limit?参数控制应用模式的次数,从而影响结果数组的长度?
如果限制?n?大于零,那么模式至多应用?n>?-?1?次,数组的长度不大于?n,并且数组的最后条目将包含除最后的匹配定界符之外的所有输入?
如果?n?非正,那么将应用模式的次数不受限制,并且数组可以为任意长度?
如果?n?为零,那么应用模式的次数不受限制,数组可以为任意长度,
并且将丢弃尾部空字符串??
修改代码为?
?
- class?T?{ ??
- ??public?static?void?main(String?args[])?{ ??
- ????String?num[]?=?new?String[11]; ??
- ????String?sLine?=?"101494|360103660318444|2008/06/17|周润英|1292.0|3085.76|2778.28|912.91|106.0|||"; ??
- ????num?=?sLine.split("\\|",-1);?//?这里使用-1作为参数???
- ????int?row?=?1; ??
- ????for?(String?s?:?num)?{ ??
- ??????System.out.println(row+++"="+s); ??
- ????} ??
- ??} ??
- }??
运行结果为?
1=101494?
2=360103660318444?
3=2008/06/17?
4=周润英?
5=1292.0?
6=3085.76?
7=2778.28?
8=912.91?
9=106.0?
10=?
11=?
12=?
结果正常