如鹏网 大学生计算机学习社区

CowNew开源团队

http://www.cownew.com 邮件请联系 about521 at 163.com

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  363 随笔 :: 2 文章 :: 808 评论 :: 0 Trackbacks

虽然使用正则表达式能很好的进行字符串的解析、提取、替换,但是对于一些简单的应用,使用 String 类提供的一些方法就可以很好的完成,最突出的就是 split 方法。

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

     }

}

运行结果

中国 北京 海淀 学院路

posted on 2007-01-20 23:38 CowNew开源团队 阅读(2825) 评论(9)  编辑  收藏

评论

# re: xjl:关于String类的split方法 2007-01-22 10:39 ChairMan 貓
是需要转义一下。  回复  更多评论
  

# re: xjl:关于String类的split方法 2007-01-22 10:49 BeanSoft
顶一个!  回复  更多评论
  

# re: xjl:关于String类的split方法 2007-01-22 11:40 Yu-peng Cun
好贴,长了见识  回复  更多评论
  

# re: xjl:关于String类的split方法 2007-01-22 15:04 青山绿水
谢谢,我曾经也遇到过这种事情,但我常用stoken,长知识了。  回复  更多评论
  

# re: xjl:关于String类的split方法 2007-01-23 09:07 小猫
顶一个!  回复  更多评论
  

# re: xjl:关于String类的split方法 2007-01-23 19:03 lang
建议试验一下org.apache.commons.lang.stringutils.split(value,".");  回复  更多评论
  

# re: xjl:关于String类的split方法 2007-01-25 12:06 Web 2.0 技术资源
虽然使用正则表达式能很好的进行字符串的解析、提取、替换,但是对于一些简单的应用,使用 String 类提供的一些方法就可以很好的完成,最突出的就是 split 方法。

和后面说的矛盾了..........  回复  更多评论
  

# re: xjl:关于String类的split方法 2007-01-25 12:47 CowNew开源团队
@Web 2.0 技术资源
谢谢。这段文字是从我的那本书中作废下来的一段,如果结合上下文就不矛盾了。:)  回复  更多评论
  

# re: xjl:关于String类的split方法 2007-03-26 15:49 flyzl
Matcher 类没有 split 方法
是同包下的 Pattern 类  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问