用正则表达式看.NET编程--正则核心对象详解(二)

                                                  正则核心对象详解(二)

     

          前言:大家反映文章的排版有问题,我在写文章的时候也一直注意这个问题,写的时候排版不错,但是发上去了就变了,我也不知道怎么回事,希望大家理解!谢谢各位!

          上一篇文章讲一了一些.NET中的正则表达式的类,而且着重讲了Regex类,下面我们就接着讲解,今天的内容分为以下部分:

          1.Regex类的一些高级话题.

         

          首先,我们接着上次的Regex的一些继续:

          1.1在Regex中有一个方法很奇怪的,那就是它的Replace方法,很多的类都有这个方法,比如string类也有,说白了就了替换方法,但是Regex类的这个方法稍有

不同.

          首先,我们还是来举个例子,便于后面的讲解:

          

Code

 

          上面的例子很简单,下面我们来看看Replace方法的几个重载

          regex.Replace(strString,replacement);

          regex.Replace(strString,replacement,count);

          regex.Replace(strString,replacement,count,offset);

          方法的返回值类型都是string的.

          我们来解析参数的意思:strString:要被替换的那个字符串,replacement:用来替换的字符串,比如strString="   xiaoyang    ",replacement=" ",那么

我们实际是用一个空格来替换strString的所有空格.count:就是说明,你要匹配几次,是个int类型的数,默认情况下,你不设置这个值,你的正则表达式会把strString中符

合条件的全部匹配,然后替换,如果,你设置了这个数,如上面的例子,你不设置时,结果是" xiaoyang "(注意,前后只有一个空格了,原来有很多的).如果你设置count参数

为1,那么你的正则表达式就只是匹配替换一个,即替换strString前面的那些空白,结果就是" xiaoyang    ";

          还有一个参数就是offset,这个参数和前面Match()方法的一样,指定开始匹配的位置.

 

          下面进入一些高级话题:          

 

          上面讲了replacement就是用来替换的字符串,其实这只是replcement的一个用法,即你可以在这样regex.Replace(strString," xxxx");"xxxx"表示你用来

 

替换的字符串.其实在replacement参数这个位置,我们还可以传入一个委托,使得用法更加的灵活.

          这个方法很有用,比如,但你要替换strString中的一些字符,但是你不只是简简单单的将用一个,如"a"来替换strString中的一个"bc",你而是想,只要

在strString中看见"bc",那么就要开始进行一些操作,显示把"bc"进行一些运算,然后在再进行一些操作,之后还进行一些操作.这样,你就要再看见"bc"后传入

一个方法.那么现在,将replacement 传入一个委托(函数指针)就很好处理这个问题..

 

          这个委托的形式如下:

          

Code

 

          那么我们之前说的那个例子用委托来说下:

          regex.Replace(strString,matchEvaluator);

          然后,你定义方法就可以了,如string MyMatchFun(Match match);

           而且再MyMatchFun的方法中,Match对象中保存了你匹配的有关信息的,如你刚刚匹配到的那个"bc"值,就再Match.Value中,如果有分组的话,你还

可以用Groups[i](注意:i是个数组索引)来取你想要的值.

     

          好了,高级话题就先说到这里,我们下面来看看Regex的最后一个方法Split.

          这个方法和string类的split方法很相似的,都是分割,只不过,Regex类的这个方法是先匹配,再分割,看看下面的这个例子.

          

Code

 

          先是匹配字符串中所有"."然后分割.返回结果是数组.

          下面是Split的方法重载

          regex.Split(strString);

          regex.Split(strString,count);

          regex.Split(strString,count,offset)

          参数的意思和上面的Replace方法的一样,我不赘述了.

     

          我今天写到这里,内容不多,大家见谅.下一篇就写Group和Match对象.大家关注!

 

 

          

 

          

posted @ 2009-01-07 12:40  小洋(燕洋天)  阅读(2378)  评论(5编辑  收藏  举报