LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 高性能敏感詞過濾神器!性能超 Regex 8.8 萬倍

admin
2025年7月22日 18:43 本文熱度 535

ToolGood.Words 是一個基于 C# 實現的高性能非法詞(敏感詞)檢測組件,具備以下核心功能:

  • ? 敏感詞過濾(支持通配符)
  • ? 繁體/簡體互換
  • ? 全角/半角互換
  • ? 獲取拼音(全拼、首字母)
  • ? 拼音模糊匹配
  • ? 數字與中文大寫轉換

在 48k 敏感詞庫下,使用 StringSearchEx2.Replace 進行過濾,速度可超過 3 億字符/秒(測試環境:i7-8750H CPU)。


核心組件說明

非法詞(敏感詞)檢測類

類名
特點
StringSearch
 / StringSearchEx / StringSearchEx2
返回 string 類型結果
WordsSearch
 / WordsSearchEx / WordsSearchEx2
返回 WordsSearchResult 類型,包含位置、序號等信息
IllegalWordsSearch
專為非法詞過濾設計,支持跳詞、黑名單、忽略大小寫等高級功能

常用方法

  • SetKeywords:設置敏感詞庫
  • ContainsAny:判斷是否包含敏感詞
  • FindFirst:查找第一個敏感詞
  • FindAll:查找所有敏感詞
  • Replace:替換敏感詞為指定字符

示例代碼

var iwords = new StringSearch();
iwords.SetKeywords("中國|國人|zg人".Split('|'));

bool contains = iwords.ContainsAny("我是中國人"); // true
string replaced = iwords.Replace("我是中國人"'*'); // "我是***"

支持通配符的檢測類

類名
特點
StringMatch
 / StringMatchEx
支持部分正則表達式語法,如 .?[], `(
WordsMatch
 / WordsMatchEx
返回 WordsMatchResult,包含匹配詞、原始詞、位置等信息

示例代碼

var wordsSearch = new WordsMatch();
wordsSearch.SetKeywords(".[中美]國|國人|zg人".Split('|'));

var result = wordsSearch.FindFirst("我是中國人");
// result.Keyword => "是中國"
// result.MatchKeyword => ".[中美]國"

輔助功能

繁簡轉換與字符處理

WordsHelper.ToSimplifiedChinese("我愛中國"); // "我愛中國"
WordsHelper.ToTraditionalChinese("我愛中國"); // "我愛中國"
WordsHelper.ToSBC("abc"); // 全角:abc
WordsHelper.ToDBC("abc"); // 半角:abc

拼音處理

WordsHelper.GetPinyin("我愛中國"); // "WoAiZhongGuo"
WordsHelper.GetFirstPinyin("我愛中國"); // "WAZG"
WordsHelper.GetAllPinyin('傳'); // "Chuan,Zhuan"

數字與中文轉換

WordsHelper.ToChineseRMB(12345678901.12); // "壹佰貳拾叁億肆仟伍佰陸拾柒萬捌仟玖佰零壹元壹角貳分"
WordsHelper.ToNumber("壹佰貳拾叁億肆仟伍佰陸拾柒萬捌仟玖佰零壹元壹角貳分"); // 12345678901.12

拼音模糊匹配

使用 PinyinMatch 和 PinyinMatch<T> 可實現拼音模糊搜索,適用于地址、姓名等場景。

var match = new PinyinMatch();
match.SetKeywords("北京|天津|河北|遼寧|吉林|黑龍江|山東|江蘇|上海|浙江|安徽|福建|江西|廣東|廣西|海南|河南|湖南|湖北|山西|內蒙古|寧夏|青海|陜西|甘肅|新疆|四川|貴州|云南|重慶|西藏|香港|澳門|臺灣".Split('|').ToList());

var result = match.Find("BJ"); // ["北京"]

性能對比

在 10 萬次測試中,StringSearchEx2.ContainsAny 的性能遠超 C# 自帶正則表達式,效率是其 8.8 萬倍以上(與敏感詞數量相關)。

?? 注意:Regex.Matches 僅檢測出 11 個敏感詞,而 StringSearch 檢測出 14 個。


多語言實現

  • Lua 版本:由 wenlifan 實現

開源地址

https://gitee.com/toolgood/ToolGood.Words?

 


··············  END  ··············


該文章在 2025/7/23 12:10:01 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲中文字幕五码专区 | 夜夜爱夜夜操国产精品 | 一区二区三区婷婷 | 天天欢夜夜爽视频精品 | 亚洲中文字幕a∨在线 | 亚洲欧美日韩高清一区二区 |