標籤:style blog http color 使用 os
功能:使用正則 對玩家暱稱處理,如果含有 屏蔽字型檔裡的敏感字眼進行屏蔽。已封裝成dll
1.屏蔽字型檔處理成所需要的正則格式:(所需Regex格式:".*((XX)|(XX)|(XX)|....).*")
2.FilterHelper類中:
public sealed class FilterHelper { private Regex r; #region Singleton private static readonly FilterHelper instance = new FilterHelper(); public static FilterHelper Instance { get { return instance; } } private FilterHelper() { } #endregion private void ReadRex() { string path = AppDomain.CurrentDomain.BaseDirectory; string textFile = path + "FilterSt.txt"; FileStream fs; if (File.Exists(textFile)) { fs = new FileStream(textFile, FileMode.Open, FileAccess.Read); using (fs) { ////TextRange text = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd); //text.Load(fs, DataFormats.Text); //建立一個容量4M的數組 byte[] byteData = new byte[fs.Length]; //從檔案中讀取資料寫入到數組中(數組對象,從第幾個開始讀,讀多少個) //返回讀取的檔案內容真實位元組數 int length = fs.Read(byteData, 0, byteData.Length); //如果位元組數大於0,則轉碼 if (length > 0) { //將數組轉以UTF-8字元集編碼格式的字串 var filterst = ".*(" + Encoding.UTF8.GetString(byteData) + ").*"; r=new Regex(@filterst); } } } else { throw new FileNotFoundException("找不到屏蔽字型檔"); } } /// <summary> /// 判斷是否屏蔽 /// </summary> /// <param name="input"></param> /// <returns></returns> public bool IsStFilter(string input) { if (string.IsNullOrEmpty(input)) { throw new Exception("輸入不可為空"); } if (r == null) { ReadRex(); } if (r.IsMatch(input)) { return true; } else { return false; } } }
View Code
3.需要判斷是否屏蔽的地方:直接調用FilterHelper.Instance.IsStFilter(判斷的暱稱)
備忘:1、dll中只能包含代碼,資源檔必須複製到對應的輸出路徑。
2、屏蔽字型檔的txt要複製到項目的輸出路徑,也就是 AppDomain.CurrentDomain.BaseDirectory說對應的路徑。
Demo串連:http://download.csdn.net/detail/ofat___lin/7615715