.NET-15-正则替换

正则替换:

////把a?替换成一个A
            //string str = "hiaaa你aa好aaa啊aa";
            //str = Regex.Replace(str, "a+", "A");
            //Console.WriteLine(str);

            ////把引号替换成中括号,这里需要使用组
            ////如果想要输出$,则需要使用$$
            //string str = "hello 'welcome' to 'china' 'yy'  'lzs' 'xss'";
            //str = Regex.Replace(str, "'(.+?)'", "[$1]$$");
            //Console.WriteLine(str);

            ////隐藏手机号
            //string str = "yy18019999999,ly18019999998,xss18019999997";
            //str = Regex.Replace(str, "([1-9][0-9]{2})[0-9]{4}([0-9]{4})", "$1****$2");
            //Console.WriteLine(str);

            //隐藏邮箱,邮箱名称有几位替换成几个*
            //这里是直接全部替换成了3个*,想要几个字符替换成几个*需要穿委托参数
            string str = "邮箱[email protected],邮箱[email protected],邮箱[email protected]";
            //禁止匹配汉字
            str = Regex.Replace(str, @"\w+(@\w+.\w+)", "***$1", RegexOptions.ECMAScript);
            Console.WriteLine(str);


            //单词边界\b
            ////使用单词边界替换固定的单词
            ////把come替换成go
            //string str = "welcome to china, come on!!";
            ////这样会把welcome中的come也给替换掉
            ////str = Regex.Replace(str, "come", "go");
            ////使用单词边界来判断
            ////单词边界是个断言(还有^$也是断言),只进行判断不进行匹配
            ////把光标定位到一个任意位置,这个光标的位置就是一个边界,如果这个光标的一边是字母,一边不是则这个光标就可以看做是个单词的边界(这是我自己的理解,可能这么解释并不合适)
            ////单词边界只进行判断,并不进行匹配
            ////什么是“单词”,正则匹配结果为[a-zA-Z0-9_]
            //str = Regex.Replace(str, @"\bcome\b", "go");
            //Console.WriteLine(str);

            ////提取三个字母组成的单词
            //string str = "hi,how are you,welcome to china,yes!!";
            //MatchCollection mats = Regex.Matches(str, @"\b[a-zA-Z]{3}\b", RegexOptions.IgnoreCase);
            //foreach (Match item in mats)
            //{
            //    Console.WriteLine(item.Value);
            //}

            ////提取三个字母组成的单词
            //string str = "## # ### #  ### ##### ## ### ####";
            ////这里输出为空,匹配不到任何结果,因为#并不是单词,所以单词边界无法对其进行判断
            ////MatchCollection mats = Regex.Matches(str, @"\b###\b");
            ////这里匹配多了,四个字符和五个字符的也被匹配出来了
            ////MatchCollection mats = Regex.Matches(str, "###");
            ////这里使用环视,正向环视和逆向环视
            //MatchCollection mats = Regex.Matches(str, @"(?<= )###(?= )");
            //foreach (Match item in mats)
            //{
            //    Console.WriteLine(item.Value);
            //}

            ////引用分组
            ////叠词替换
            //string str = "我我我我我嘻嘻嘻嘻嘻哈哈哈哈哈哈你你你你你";
            ////这里使用分组(),之后的\1表示分组信息,\1表示第一组,\2表示第二组
            ////()()()   \1\2\3
            ////匹配任意的字符,然后把这个字符分组,之后分组的信息继续出现一次或多次
            //str = Regex.Replace(str, @"(.)\1+", "$1");
            //Console.WriteLine(str);

            ////时间格式替换
            ////将日期格式mm/dd/yyyy替换成  yyyy-mm-dd
            //string str = "我的生日是06/27/2015小硕硕的生日是11/05/2016";
            //str = Regex.Replace(str, @"(\d{2})/(\d{2})/(\d{4})", "$3-$1-$2", RegexOptions.ECMAScript);
            //Console.WriteLine(str);

            ////敏感词过滤
            ////用户输入的字符串
            //string str = "";
            ////保存需要审核的敏感词
            //StringBuilder sbMode = new StringBuilder();
            //sbMode.Append("安定片|网络推广|办理证件|办证");
            ////保存绝对不允许发布的敏感词
            //StringBuilder sbBanned = new StringBuilder();
            //sbBanned.Append("手枪|假币|冰毒|吸毒|赌博|博彩|枪手");

            ////验证是否有禁止发送的关键字
            //if (Regex.IsMatch(str, sbBanned.ToString()))
            //{
            //    //禁止发帖
            //}
            //else if (Regex.IsMatch(str, sbMode.ToString()))
            //{
            //    //需要审核
            //}
            //else
            //{
            //    //直接通过思密达
            //}

猜你喜欢

转载自blog.csdn.net/m0_37532448/article/details/81224563