本文主要是介绍String split 对空字符的处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
开发时做字符串分割为数组时遇到这样的问题,分割符后是空串,没有作为元素存到数组中,如下:
String name = "a,b,c,r,,,,";
String[] names1 = name.split(",");
期待得到的数组长度是8,结果得到的长度是4,因为结尾的空字符串都被丢弃了。
后来查到该方法还有一个重载,split(String regex, int limit) 可以解决这个问题。
limit 参数控制模式应用的次数,如果这个限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n ,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正数,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
测试程序如下:
String name = "a,b,c,r,,,,";
String[] names1 = name.split(",");
String[] names2 = name.split(",",2);
String[] names3 = name.split(",", -1);
String[] names4 = name.split(",", 0);System.out.println("names1长度:"+names1.length);
Arrays.stream(names1).forEach(item -> System.out.print(" | " + item));
System.out.println();
System.out.println("names2长度:"+names2.length);
Arrays.stream(names2).forEach(item -> System.out.print(" | " + item));
System.out.println();
System.out.println("names3长度:"+names3.length);
Arrays.stream(names3).forEach(item -> System.out.print(" | " + item));
System.out.println();
System.out.println("names4长度:"+names4.length);
Arrays.stream(names4).forEach(item -> System.out.print(" | " + item));
System.out.println();
执行结果:
names1长度:4
| a | b | c | r
names2长度:2
| a | b,c,r,,,,
names3长度:8
| a | b | c | r | | | |
names4长度:4
| a | b | c | r
这篇关于String split 对空字符的处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!