/// <summary>
/// 判断用户的评论中是否有禁用词
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public bool CheckForbid(string msg)
{
List<string> list = dal.GetForbidWord();//获取所有的禁用词 (也可以放入缓存中)。
string regex = string.Join("|",list.ToArray()); //aa|bb|cc|dd 正好拼接成正则表达式字符串
return Regex.IsMatch(msg, regex); //通过正则表达式判断是否包含禁用词。
//foreach (string word in list)
//{
// msg.Contains(word); //Contains函数内部也是一个循环,所以时间复杂度高,不建议使用foreach函数,而是使用正则表达式。
// break;
//}
}
/// <summary>
/// 审查词过滤
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public bool CheckMod(string msg)
{
List<string> list = dal.GetModWord();//获取所有的审查词 (也可以放入缓存中)。
string regex = string.Join("|", list.ToArray()); //aa|bb|cc|dd
regex = regex.Replace(@"\", @"\\").Replace("{2}",@".{0,2}"); //replace对正则表达式字符串作进一步处理。{0,2}表示0到2个字符。
return Regex.IsMatch(msg, regex);
}
/// <summary>
/// 替换词过滤
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public string CheckReplace(string msg)
{
List<Model.Articel_Words> list = dal.GetReplaceWord(); //(可以放入缓存中)
foreach (Model.Articel_Words model in list)
{
msg = msg.Replace(model.WordPattern, model.ReplaceWord); //将敏感词替换成对应词。
}
return msg;
}