javasplit空字符_浅谈String.split()遇到空字符串的⼏种情况Java中的我们可以利⽤split把字符串按照指定的分割符进⾏分割,然后返回字符串数组
split ⽅法
该⽅法的作⽤是:将⼀个字符串分割为⼦字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或⽂字,该对象不会被split⽅法修改。
separator
可选项。字符串或正则表达式对象,它标识了分隔字符串时使⽤的是⼀个还是多个字符。如果忽略该选项,返回包含整个字符串的单⼀元素数组。
limit
参数控制模式应⽤的次数,因此影响所得数组的长度。如果该限制 n ⼤于 0,则模式将被最多应⽤ n - 1
次,数组的长度将不会⼤于 n,⽽且数组的最后⼀项将包含所有超出最后匹配的定界符的输⼊。
如果 n 为⾮正,那么模式将被应⽤尽可能多的次数,⽽且数组可以是任何长度。如果 n 为 0,那么模式将被应⽤尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
会遇到以下⼏种情况:
1.空字符串不被解析
public class test {java中split的用法
public static void main(String[] args) {
String str = "1,2,3,4,,,";
String[] arr = str.split(",");
for (String string : arr) {
System.out.println("str"+string);
}
System.out.println(arr.length);
}
}
结果1:
2.最后⼀个分隔符被分的字符串不为空时,其余空字符串可被解析。
public class test {
public static void main(String[] args) {
String str = "1,2,3,4,,,5";
for (String string : arr) {
System.out.println("str"+string);
}
System.out.println(arr.length);
}
}
结果2:
但是在实际开发的时候不能保证最后⼀个分隔符被分的字符串为不空,所以在⽤split()这个⽅法后再取被分隔的字符串数组的时候有时候就出现数据越界的问题(最后⼀个分隔符被分的字符串为空)
想到了⼀个⽅法是split([separator,[limit]]) ,后⾯把limit赋值成⽐该字符串被分隔成字符数组后数组的长度⼤很多的值,这能保证所有为空的都能被解析,这正应了api⾥的解释:
3.如果该限制 n ⼤于 0,则模式将被最多应⽤ n - 1 次(此时n为1000)
public class test {
public static void main(String[] args) {
String str = "1,2,3,4,,,";
String[] s = str.split(",",1000);
for (String string : s) {
System.out.println("str"+string);
}
System.out.println(s.length);
}
}
结果3:
4.如果把limit设置为⾮正,也能全部解析如:
public class test {
public static void main(String[] args) {
String[] s = str.split(",",-1);
for (String string : s) {
System.out.println("str"+string);
}
System.out.println(s.length);
}
}
结果4:
当String str = "1,2,3,4,,,5";时分别与上述结果3,4⼀致。
1.当参数为整数的时候,只需要截取前⼏个,需要⼏个截取⼏个,这个不⽤多说。
Java代码
String line = "aa,bb,cc,dd,,,," ;
System.out.println(line.split( "," , 6 ).length);
输出结果为 6 ,limit参数指定⼏个,输出⼏个,最多为 8 个
2.当参数为零的时候,和split()⼀样,截图尽可能多的字符串(其实不是最多的)。
Java代码
String line = "aa,bb,cc,dd,,,," ;
System.out.println(line.split( "," , 0 ).length);
输出结果为 4
3.当参数为负的时候,即使后⾯有空的串,也会输出到最⼤
Java代码
String line = "aa,bb,cc,dd,,,," ;
System.out.println(line.split( "," ,- 1 ).length);
输出结果为 8
注意:
1、如果⽤“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能⽤String.split(".");
2、如果⽤“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能⽤String.split("|");
以上这篇浅谈String.split()遇到空字符串的⼏种情况就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持脚本之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论