zoukankan      html  css  js  c++  java
  • 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;//如果没有找到,返回原字符串
        }
    

    有需要改进的地方,麻烦大家提出,共同学习

  • 相关阅读:
    JS 获取本月第一天零点时间戳并转化成yy-mm-dd
    JS 两个对象数组合并并去重
    element ui datePicker 设置当前日期之前的日期不可选
    整理一些vue elementui 问题 + 链接方法
    css 修改placeholder的颜色
    js循环内0.5s停止
    自定义border 为 dashed 时的虚线间距
    如何让浮动元素水平/垂直居中
    centos7.6设置sftp服务
    HikariCP Druid比较
  • 原文地址:https://www.cnblogs.com/wucai543/p/3428710.html
Copyright © 2011-2022 走看看