zoukankan      html  css  js  c++  java
  • 特殊的正则匹配需求

               
          //特殊的需求,正则匹配一段字符串中的 504 前后 非数字 并且 
           //如果504前后 如果有一端为数字就不进行替换操作
              //例如:a504a504b504c504a  这种情况504就要进行替换
          //数字+504a504+数字 这种情况就不进行替换  
          //504 这种情况就不进行替换
          
           StringBuilder strIpt = new StringBuilder(this.textBox1.Text.Trim());
                string strPattern = @"(?=\D504\D)|(?=\D504$=?)";          
               
             
                int iCount = 0;
    
              
                string strRep = "@@@@@@@@@";
                     
                foreach (Match m in Regex.Matches(strIpt.ToString(), strPattern))
                {
                    //记录替换之前的字符串的长度
                    int iLen = strIpt.Length;
              
                    //重新计算出要替换的字符
                    int iBegin = m.Index - iCount * (3 - strRep.Length) + 1;
    
                    //如果长度在length  的范围之内 
                    if (iBegin <= strIpt.Length-3 && m.Index > 0)
                    {
                        strIpt.Replace("504", strRep, iBegin,3);  //进行替换                
    
                    }
                    else if (m.Index == 0)
                    {
                        //m.Index =0 的替换位置和其他的有些区别所以单令做处理了
                        strIpt.Replace("504", strRep, m.Index + 1, 3); 
                        
                    }
                    if (strIpt.Length != iLen)
                    {
                        iCount++; //让替换统计的计数器加 1
                    }
    
                   
                    
                   
                  
                }
                MessageBox.Show(strIpt.ToString());

     实现结果:

  • 相关阅读:
    状态模式
    迭代器模式和组合模式
    模板方法模式
    适配器模式和外观模式
    principle06
    principle05
    命令模式
    单例模式
    工厂模式
    day38(表相关内容)
  • 原文地址:https://www.cnblogs.com/hzy168/p/3061902.html
Copyright © 2011-2022 走看看