以前一直认为String的split方法是直接按照给定的字符串对字符串进行拆分,例如

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]+"  "); 

} 

posted on 2009-03-26 18:27  sky100  阅读(295)  评论(0编辑  收藏  举报