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;//如果沒有找到,返回原字符串
    }

有需要改進的地方,麻煩大家提出,共同學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM