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

本文介绍了一个使用C#实现的子串查找程序,包括统计源字符串中目标字符串的出现次数、获取指定出现次数的位置索引及后续子串的方法。通过具体的代码示例展示了如何利用正则表达式进行高效匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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/wangchuang/archive/2012/05/18/2507405.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值