全部博文(141)
分类: 嵌入式
2011-09-29 10:27:20
前言:大家反映文章的排版有问题,我在写文章的时候也一直注意这个问题,写的时候排版不错,但是发上去了就变了,我也不知道怎么回事,希望大家理解!谢谢各位!
上一篇文章讲一了一些.NET中的正则表达式的类,而且着重讲了Regex类,下面我们就接着讲解,今天的内容分为以下部分:
1.Regex类的一些高级话题.
首先,我们接着上次的Regex的一些继续:
1.1在Regex中有一个方法很奇怪的,那就是它的Replace方法,很多的类都有这个方法,比如string类也有,说白了就了替换方法,但是Regex类的这个方法稍有
不同.
首先,我们还是来举个例子,便于后面的讲解:
上面的例子很简单,下面我们来看看Replace方法的几个重载:
方法的返回值类型都是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 传入一个委托(函数指针)就很好处理这个问题.
这个委托的形式如下:
那么我们之前说的那个例子用委托来说下:
然后,你定义方法就可以了,如string MyMatchFun(Match match);
而且再MyMatchFun的方法中,Match对象中保存了你匹配的有关信息的,如你刚刚匹配到的那个"bc"值,就再Match.Value中,如果有分组的话,你还可以用Groups[i](注意:i是个数组索引)来取你想要的值.
好了,高级话题就先说到这里,我们下面来看看Regex的最后一个方法Split.
这个方法和string类的split方法很相似的,都是分割,只不过,Regex类的这个方法是先匹配,再分割,看看下面的这个例子
先是匹配字符串中所有"."然后分割.返回结果是数组.
下面是Split的方法重载:
参数的意思和上面的Replace方法的一样,我不赘述了.
我今天写到这里,内容不多,大家见谅.下一篇就写Group和Match对象.大家关注!