<<字符串高级截取和统计>>一文的C#正则实现

看了<<字符串高级截取和统计>>一文,确实正则可以实现,而且更为简单,后来看到<<字符串高级截取和统计>>一文的看法与正则表达式的实现中用java实现,所以我简单写了一下,把c#的实现贴出来。写到不好之处,大家多多指教。

实现原理:

使用正则表达式中的MatchCollection类,它会把搜索到的字符串保存到一个数组中,并包含相关信息。

 代码:

using  System;
using  System.Text.RegularExpressions;

namespace  SubStringDemo
{
    
class  Program
    {
        
static   void  Main( string [] args)
        {
            
string  source  =   " 123412355123559912323399 " ;
            
string  destString  =   " 123 " ;
            Console.WriteLine(
" SubString count: "   +  SubString(source, destString));
            Console.WriteLine(
" SubString 2th: "   +  SubString(source, destString,  2 ));
            Console.WriteLine(
""   +  SubString(source, destString,  4 5 ));
            Console.ReadLine();
        }
        
        
///   <summary>
        
///  统计源字符串中包含多少目标字符串
        
///   </summary>
        
///   <param name="source"> 源字符串 </param>
        
///   <param name="dest"> 目标字符串 </param>
        
///   <returns> 出现次数 </returns>
         private   static   int  SubString( string  source,  string  dest)
        {
            MatchCollection mc 
=  Regex.Matches(source, dest);
            
return  mc.Count;
        }

        
///   <summary>
        
///  获取目标字符串在源字符串中指定出现次数的索引
        
///   </summary>
        
///   <param name="source"> 源字符串 </param>
        
///   <param name="dest"> 目标字符串 </param>
        
///   <param name="ordinalNumber"> 出现序数 </param>
        
///   <returns> 出现位置索引 </returns>
         private   static   int  SubString( string  source,  string  dest,  int  ordinalNumber )
        {
            MatchCollection mc 
=  Regex.Matches(source, dest);
            
if  (mc.Count  <  ordinalNumber)
            {
                
return   - 1 ;
            }
            
else
            {
                
return  mc[ordinalNumber  -   1 ].Index;
            }
        }

        
///   <summary>
        
///  获取源字符串中在指定序数的目标字符串之后的字符串
        
///   </summary>
        
///   <param name="source"> 源字符串 </param>
        
///   <param name="dest"> 目标字符串 </param>
        
///   <param name="ordinalNumber"> 出现序数 </param>
        
///   <param name="returnStringlength"> 返回字符串的长度 </param>
        
///   <returns> 获取的字符串,不成功为null </returns>
         private   static   string  SubString( string  source,  string  dest,  int  ordinalNumber,  int  returnStringlength)
        {
            
int  pos  =  SubString(source, dest, ordinalNumber);
            
if (pos  !=   - 1 )
            {
                
return  source.Substring(pos  +  dest.Length, returnStringlength);
            }
            
else
            {
                
return   null ;
            }
        }
    }

}


执行结果:

SubString count:4
SubString 2th:4
23399

 

转载于:https://www.cnblogs.com/greenerycn/archive/2008/10/27/SubString.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值