ASP 通過正則表示式過濾敏感詞
阿新 • • 發佈:2019-02-03
/// <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; }