golang敏感詞過濾的實現
更新時間:2023年01月03日 14:01:01 作者:liyunlong41
本文主要介紹了golang敏感詞過濾的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
用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("剔除相關轉移字符后,數據長度為0.") return } return }
到此這篇關于golang敏感詞過濾的實現的文章就介紹到這了,更多相關golang敏感詞過濾內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
go語言題解LeetCode1299將每個元素替換為右側最大元素
這篇文章主要為大家介紹了go語言LeetCode刷題1299將每個元素替換為右側最大元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01Go-ethereum?解析ethersjs中產生的簽名信息思路詳解
這篇文章主要介紹了Go-ethereum?解析ethersjs中產生的簽名信息,我們解析簽名的需要知道,簽名的消息,簽名,和公鑰,按照這個思路,我們可以通過ethers實現消息的簽名,也可以通過go-ethereum實現,需要的朋友可以參考下2022-08-08