zoukankan      html  css  js  c++  java
  • 用正则表达式看.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对象.大家关注!

              

              

    小洋,燕洋天
  • 相关阅读:
    HDU 4644 BWT (KMP)
    常数的值类型问题
    HDU 1395 2^x mod n = 1 (欧拉函数)
    HDU 5384 Danganronpa(AC自动机)
    9.自己实现linux中的tree
    8.底层文件库
    7.标准文件库
    7.gcc的使用
    5.文件I/O
    4.vim操作
  • 原文地址:https://www.cnblogs.com/yanyangtian/p/1371001.html
Copyright © 2011-2022 走看看