天天看点

xjl:关于String类的split方法

虽然使用正则表达式能很好的进行字符串的解析、提取、替换,但是对于一些简单的应用,使用 String 类提供的一些方法就可以很好的完成,最突出的就是 split 方法。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

split 方法能够很方便的将字符串按照一定的规则拆分开。

比如对于下面的字符串:

Tom,Jane,Tony,Elva,Gigi

只要调用如下的代码就可以将各个名字提取出来:

String value = "Tom,Jane,Tony,Elva,Gigi"; String[] names = value.split(","); for(int i=0,n=names.length;i<n;i++) {      System.out.println(names[i]); } 运行结果:

Tom Jane Tony Elva Gigi

看到这个运行结果,很多人都认为 split 方法就是按照给定的字符串对字符串进行拆分,知道碰到了下面的问题。 有一个字符串:中国 . 北京 . 海淀 . 学院路。请解析此字符串,并打印输出“中国 北京 海淀 学院路 ”。 于是写代码如下:

String value = " 中国 . 北京 . 海淀 . 学院路 "; String[] names = value.split("."); for(int i=0,n=names.length;i<n;i++) {      System.out.print(names[i]+" "); } 运行结果:

对,没看错!没有任何输出!

让我们来看看 split 方法的方法签名吧:

public String[] split(String regex) 这里的参数的名称是 regex ,也就是 Regular Expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式,看了 split 方法的实现代码就更坚定了我们的信心:

public String[] split(String regex, int limit) {      return Pattern.compile(regex).split(this, limit); } split 的实现直接调用的 Matcher 类的 split 的方法。读者已经知道,“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。

修改代码如下:

private static void split2() {      String value = " 中国 . 北京 . 海淀 . 学院路 ";      String[] names = value.split("\\.");      for(int i=0,n=names.length;i<n;i++)      {          System.out.print(names[i]+" ");      } } 运行结果 :

中国 北京 海淀 学院路

转载于:https://blog.51cto.com/cownew/86958