String value = "a,b,c,d,e";
String[] names = value.split(",");
for(int i=0,n=names.length;i<n;i++)
{
System.out.println(names[i]);
}
运行结果:
a
b
c
d
e
但是今天在做ip解析时发现出了问题,代码如下:
String value = "209.242.1.1";
String[] names = value.split(",");
for(int i=0,n=names.length;i<n;i++)
{
System.out.print(names[i]+" ");
}
理想的输出结果应该是219 242 1 1,结果什么都没有输出。
很奇怪哦。看一下split的方法签名吧。
public String[] split(String regex)
这里的参数的名称是 regex ,也就是 Regular Expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式:
public String[] split(String regex, int limit) {
return Pattern.compile(regex).split(this, limit);
}
split 的实现直接调用的 Matcher 类的 split 的方法。“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
修改代码如下:
String value = "209.242.1.1";
String[] names = value.split("\\.");
for(int i=0,n=names.length;i<n;i++)
{
System.out.print(names[i]+" ");
}