使用split()方法可以是字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。split()方法提供了以下两种重载形式:
(1)split(String sign)
该方法可根据给定的分割符对字符串进行拆分。
语法如下:
str.split(String sign)
其中,sign未分割字符串的分隔符,也可以使用正则表达式。
(2)split(String sign , int limit)
该方法可以根据给定的分割符对字符串进行拆分,并限定拆分的次数。
语法如下:
str.split(String sign , int limit)
sign : 分割字符串的分隔符,也可以使用正则表达式。
limit:限制的分割次数。(等于分割后字符数组的元素个数)
在使用过程中,发现如果字符串中有“.”,并且想用“.”来分隔字符串,出现了如下问题:
代码1:
System.out.println("***********");
String s13 = new String("abc.def.ghi.gkl");
String[] s14 = s13.split(".",2);
for (int i = 0; i < s14.length; i++) {
System.out.println(s14[i]);
}
System.out.println("-----------");
运行结果:
结果显示分解后产生了2个字符串:“ ”和“bc.def.ghi.gkl”
如果代码改为
代码2:
System.out.println("***********");
String s13 = new String("abc.def.ghi.gkl");
String[] s14 = s13.split(".");
for (int i = 0; i < s14.length; i++) {
System.out.println(s14[i]);
}
System.out.println("-----------");
结果:
进一步,将代码改为
代码3:
System.out.println("***********");
String s13 = new String("abc/def/ghi/gkl");
String[] s14 = s13.split("./");
for (int i = 0; i < s14.length; i++) {
System.out.println(s14[i]);
}
System.out.println("-----------");
结果:
经验证,这时因为“.”在正则表达式中匹配除“\r\n”外的任何单个字符。
想要用“.”来分割字符串的正确代码:
System.out.println("***********");
String s13 = new String("abc.def.ghi.gkl");
String[] s14 = s13.split("\\.");
for (int i = 0; i < s14.length; i++) {
System.out.println(s14[i]);
}
System.out.println("-----------");
结果: