沈阳格力专卖店 发表于 2015-4-20 10:19:19

在C#中实现Python的分片技术

  在C#中实现Python的分片技术
  前言
    之前在学习Python的时候发现Python中的分片技术超好玩的,本人也是正则表达式热爱狂,平时用C#比较多,所以决定把Python中的分片技术在C#中实现,添加到个人类库中,以便日后在写C#代码的时候能舔一舔Python的味道。
  效果展示
  Python版:           C#版:
  
  切割技术讲解
    这里先简要讲解一下Python中的分片技术,其他Python前辈也对此技术有丰富多彩的讲解文章,这里只是简要说明一下,好让读者们能知道下怎么回事,如果想更深入了解Python的分片技术,这里并不适合你哦。

    分片的对象可以是字符串或者序列,本文提供字符串的实现方法,其实序列差不多的,我也会在最后提供字符串和序列的实现代码,并且附带单元测试。
    好了,废话不多说,其实看了上面的Python版的结果,我想聪明的您就略知一二了。分片的模板是:变量[起始位置:终点位置:步长],举个例子:a="abcdfeghij",那么a这个的结果就是零位置开始(a的左边),步长为1(也就是连续取),到2位置结束(从a的左边开始:0->(a的左边),1->(b的左边,a的右边),2->(c的左边,b的右边)->结束),好了,结果就是"ab"。
         注意事项:1.步长可以忽略不写(默认为1),如果步长为2,就每取一个跳过1个,以此类推。
              2.可以使用负数a[-3:-1:1],结果是"ef",读者们可以自己推一下,很简单。

              3.分片技术可以针对字符串,也可以针对序列。

    
  实现过程
    这里需要用到正则表达式的技术,可能对一些朋友来说比较难懂,但是我会尽量讲解的简单一点。
    首先,要使用分片,有三个参数可以控制:起始位置,结束位置,步长。所以在正则表达式应该嵌入这三个参数变量,在匹配的时候动态生成正则表达式。下面来看需要把这三个参数放到哪里:
      起始位置:
          1.背景
              这里使用肯定逆序环视,什么是肯定逆序环视,就是匹配到的位置那一点向后看,向后看的内容必须符合环视的内容,举个例子:文本:abc,正则表达式:(?
页: [1]
查看完整版本: 在C#中实现Python的分片技术