golang敏感詞過濾的實現(xiàn)
用golang寫了敏感詞過濾的工具,主要用來檢測用戶昵稱中是否存在敏感詞,同時提供剔除轉移字符的功能。
可以先將敏感詞庫存放在一個map中,敏感詞可以參考這里:https://github.com/fwwdn/sensitive-stop-words
將map和昵稱傳入,程序會檢查昵稱的每一個子串,判斷是否在map敏感詞庫中。復雜度O(len(name)^2)
package util import ( "github.com/pkg/errors" "strings" ) type filter struct { data string maxLimitLen int } func NewKeywordFilter(str string, maxLimitLen int) (*filter, error) { if len(str) > maxLimitLen { return nil, errors.Errorf("長度:%d,不能超過:%d", len(str), maxLimitLen) } return &filter{ data: str, maxLimitLen: maxLimitLen, }, nil } func (f *filter) GetData() string { return f.data } func (f *filter) FilterKeywords(keywords map[string]bool) (err error) { if keywords == nil { return } for i := 0; i < len(f.data); i++ { for j := i + 1; j <= len(f.data); j++ { subStr := f.data[i:j] if _, found := keywords[subStr]; found { err = errors.Errorf("昵稱違規(guī),建議修改") } } } return } func (f *filter) TrimAllCharset(ch []string) (err error) { if ch == nil { return } for _, c := range ch { f.data = strings.Replace(f.data, c, "", -1) } if len(f.data) == 0 { err = errors.New("剔除相關轉移字符后,數(shù)據(jù)長度為0.") return } return }
到此這篇關于golang敏感詞過濾的實現(xiàn)的文章就介紹到這了,更多相關golang敏感詞過濾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
go語言題解LeetCode1299將每個元素替換為右側最大元素
這篇文章主要為大家介紹了go語言LeetCode刷題1299將每個元素替換為右側最大元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01Go-ethereum?解析ethersjs中產(chǎn)生的簽名信息思路詳解
這篇文章主要介紹了Go-ethereum?解析ethersjs中產(chǎn)生的簽名信息,我們解析簽名的需要知道,簽名的消息,簽名,和公鑰,按照這個思路,我們可以通過ethers實現(xiàn)消息的簽名,也可以通過go-ethereum實現(xiàn),需要的朋友可以參考下2022-08-08golang實現(xiàn)簡單工廠、方法工廠、抽象工廠三種設計模式
這篇文章介紹了golang實現(xiàn)簡單工廠、方法工廠、抽象工廠三種設計模式的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04