C#之正则表达式

来源:互联网 发布:php exchange 发邮件 编辑:程序博客网 时间:2024/05/23 19:13

问题:过滤数据中的敏感信息。

解决:正则表达式筛选敏感信息--》替换敏感信息。

代码:

/// <summary>        /// 修改错误返回的描述内容        /// </summary>        /// <param name="redata">返回的Json</param>        /// <returns></returns>        public static string ChangeError(string redata)        {            string restr = redata;            #region 合法性验证            //Regex()的第一个参数是正则表达式            Regex reg = new Regex("\"RESULT_CODE\":\"1\"", RegexOptions.IgnoreCase);//操作失败            //Match()的第一个参数是需要匹配的字段            Match match = reg.Match(redata);            Regex reg_s = new Regex("\"RESULT_DESC\":\"\\*\\S*\\*", RegexOptions.IgnoreCase);//可显示的描述            Match match_s = reg_s.Match(redata);            //Captures:所有匹配的集合            //Count:集合数量            if (match.Captures.Count > 0)            {                if (match_s.Captures.Count == 0)//修改敏感信息                {                    Regex reg_r = new Regex("\"RESULT_DESC\":\".*?\"", RegexOptions.IgnoreCase);                    //Replace替换所有匹配的字段                    //第一个参数:需要匹配的字段                    //第二个参数:正则表达式                    //第三个参数:替换文本,即用该文本替换掉匹配的字段                    restr = Regex.Replace(redata, "\"RESULT_DESC\":\".*?\"", "\"RESULT_DESC\":\"操作失败\"", RegexOptions.IgnoreCase);                }                else//取消“*”,因为在返回信息中带在“*”中间的信息是可以显示的,如“*XXX*”。                {                    string desc = match_s.Groups[0].Value.ToUpper().Replace("*", "");                    restr = Regex.Replace(redata, "\"RESULT_DESC\":\"\\*\\S*\\*", desc, RegexOptions.IgnoreCase);                }            }            #endregion            return restr;        }
PS:MatchCollection是所有匹配成功的集合。Match是单个。

0 0
原创粉丝点击