C# 字符串,查找替换,支持正则

   /// <summary>
   /// 获取字符串,查找替换
   /// </summary>
   /// <param name="text">字符串</param>
   /// <param name="val">替换值</param>
   /// <param name="rex">查找规则[正则,如:@"\d{2}",直接匹配字符,如:'abc']..注意正则转义</param>
   /// <param name="textIndex">要替换出现的位置从1开始</param>
   /// <param name="once">如果只出现一次,是否替换,[0:否,1:是]</param>
   /// <param name="flag">是否全部替换</param>
   /// <returns></returns>
   public string GetStringReplace(string text, string val, string rex, int textIndex,int once, bool flag)
   {
       Regex rx = new Regex(rex, RegexOptions.Compiled | RegexOptions.IgnoreCase);
       MatchCollection match = rx.Matches(text);
        
       //全部替换或者出现1次是否替换,once==1,替换
       if (flag == true ||(match.Count==1 && once==1))
       {
           return Regex.Replace(text, rex, val);
       }
       
       //判断出现的数量,与替换位置,这里是出现过2次
       if (match.Count > 1 && textIndex <= match.Count)
       {
           int count = 0;//定义出现位置
           string str1 = string.Empty;//定义出现字符位置的前面字符串
           string str2 = string.Empty;//定义出现字符位置的后面字符串
           foreach (Match m in match)
           {
               int index = m.Index;
               str1 = text.Substring(0, index);//截取前面字符串
               string s = m.Value;//查找规则的值
               str2 = text.Substring(index + s.Length);//截取后面字符串
               count++;
               //如果出现位置与查找位置相同,则返回
               if (count == textIndex)
               {
                   return str1 + val + str2;//前面字符串+替换的字符串+后面字符串
               }
           }
       }
       return text;//如果没有找到,返回原字符串
   }

猜你喜欢

转载自www.cnblogs.com/picps/p/9449053.html
今日推荐