首先看一下在线文档中的语法:
1.String[] split(String regex)
2.String[] split(String regex, int limit)
参数regex是分割的标记字符串
参数limit是最大分割数,相当于分割之后,String数组的维数
下面通过例子来了解使用方法
ex1:
public class Solution {
public static void main(String[] args)
{
String ex = "1,2,3,4,5";
String[] res = ex.split(",");
for(int i=0;i<res.length;i++)
System.out.println(res[i]);
}
}
输入:”1,2,3,4,5” 分割字符为”,”
输出:
1
2
3
4
5
ex2:
public class Solution {
public static void main(String[] args)
{
int limit = 3;
String ex = "1,2,3,4,5";
String[] res = ex.split(",",limit);
for(int i=0;i<res.length;i++)
System.out.println(res[i]);
}
}
输出:
1
2
3,4,5
我们可以看到只有limit=3组输出
Caution:
今天在刷题的时候,用到了split函数,输入是类似”1.2.3”这种以”.”为分隔符的字符串,我是这样调用split函数的
ex3:
String in = "1.2.3";
String[] temp = in.split(".");
输出:(空)
调试的时候发现temp是一个空集,并不是想象中的分成三组分别包含”1”,”2”,”3”字符串的String数组。
上网查阅发现,regex,即regular expression(正则表达式),这个并不是一个简单的分割用的字符,而是正则表达式,我们看下split方法的实现代码:
public String[] split(String regex,int limit)
{
return pattern.compile(regex).split(this,limit);
}
split的实现是直接调用的matcher类的split的方法。而”.”在正则表达式忠有特殊的含义,所以我们使用的时候必须进行转义。
ex4:
String in = "1.2.3";
String[] temp = in.split("\\."); //在.之前加双斜杠就可以了!
如此操作,就能得到正确的输出
同样的,对于“|”,“*”,“+”都得加上转义字符“\”。
如果是“\”,那么就得写成“\\”。
如果一个字符串中有多个分隔符,可以用“|”作为连字符。
参考资料:http://docs.oracle.com/javase/1.5.0/docs/api/index.html
http://hanhongke123.blog.163.com/blog/static/6222349420114239259352/