日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

敏感词过滤golang

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 敏感词过滤golang 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?用golang寫了敏感詞過濾的工具,主要用來檢測用戶昵稱中是否存在敏感詞,同時提供剔除轉移字符的功能。

可以先將敏感詞庫存放在一個map中,敏感詞可以參考這里:https://github.com/fwwdn/sensitive-stop-words

將map和昵稱傳入,程序會檢查昵稱的每一個子串,判斷是否在map敏感詞庫中。復雜度O(len(name)^2)

package utilimport ("github.com/pkg/errors""strings")type filter struct {data stringmaxLimitLen 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("昵稱違規,建議修改")}}}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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。