| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package data
- import (
- "regexp"
- "strings"
- clog "github.com/cherry-game/cherry/logger"
- )
- const (
- maskReplaceWord string = "***" // 屏蔽字替换
- newlineReplaceWord string = "" // 换行符替换
- )
- var (
- newlineRe = regexp.MustCompile(`[\r\n]+`) // 换行符
- maskWordRegMap map[int32]*regexp.Regexp // 正则表达式
- )
- func (p *maskWordConfig) OnAfterLoad(_ bool) {
- loadMaps := map[int32]*regexp.Regexp{}
- for _, row := range p.list {
- row.Word = strings.TrimSpace(row.Word)
- // // 去掉开头是*号的
- // // **替换为*
- // // |*改成|
- // // *|改成|
- // // ?|改成|
- // // \|改为|
- // // 中间的\换成\\
- // // 最后一个是\去掉
- // row.Word = strings.TrimLeft(row.Word, "*")
- // row.Word = strings.ReplaceAll(row.Word, "**", "*")
- // row.Word = strings.ReplaceAll(row.Word, "|*", "|")
- // row.Word = strings.ReplaceAll(row.Word, "*|", "|")
- // row.Word = strings.ReplaceAll(row.Word, "?|", "|")
- // row.Word = strings.ReplaceAll(row.Word, "\\|", "|")
- // row.Word = strings.ReplaceAll(row.Word, "\\", "\\\\")
- // row.Word = strings.TrimRight(row.Word, "\\")
- reg := regexp.MustCompile(row.Word)
- if reg == nil {
- clog.Errorf("maskWordConfig regexp.MustCompile fail id:%d", row.ID)
- continue
- }
- loadMaps[row.ID] = reg
- }
- maskWordRegMap = loadMaps
- }
- func (p *maskWordConfig) Check(checkWord string) bool {
- if !Const.MaskWordIsCheck {
- return false
- }
- for _, reg := range maskWordRegMap {
- if reg.MatchString(checkWord) {
- return true
- }
- }
- return false
- }
- func (p *maskWordConfig) Replace(word string) string {
- // 换行符替换为 ""
- word = newlineRe.ReplaceAllString(word, newlineReplaceWord)
- if !Const.MaskWordIsCheck {
- return word
- }
- for _, reg := range maskWordRegMap {
- word = reg.ReplaceAllString(word, maskReplaceWord)
- }
- return word
- }
|