• 敏感词过滤


      最近在项目中遇到这样一个需求,一个中文敏感词数组chineseWords,一个英文敏感词数组englishWords,现在有用户聊天中输入的一句话,这句话有三种情况:

      1,全是中文和标点符号

      2,全是英文加标点符号

      3,中英文标点符号混合

    现在要判断这句话是不是包含敏感词的(中文或英文),如果包含即为敏感语句。具体需求说明如下:

    首先把判断一个语句是否是敏感语句的功能封装成一个npm包,这样无论在哪个项目中需要此功能直接导入使用就可以了。(不会封装npm包的可参考此教程 https://segmentfault.com/a/1190000011095467)

    npm包的核心代码如下:

    const chineseWords = ['小穴', '寻乐论坛', '小姐威客网', '小姐信息', '二b']
    const englishWords = ['zoophilia', 'yiffy', 'yeasty', 'yaoi', 'sb']
    const judgeSensitiveWords = (str) => {
      // 如果存在敏感词就返回true , 不存在返回false
      let flag = false
      // 判断中文
      for (let i = 0; i < chineseWords.length; i += 1) {
        if (str.indexOf(chineseWords[i]) !== -1) {
          // 说明中文中包含敏感词
          flag = true
          break
        }
      }
    
      if (flag === false) {
        // 如果中文中没有敏感词就继续判断英文
        const reg = /[a-zA-Z]+/ig
        // match方法返回的是由匹配结果组成的数组,即语句中所有连写的英文都将被筛选出来,如果没有匹配的会返回null
        const resultS2 = str.match(reg)
        // console.log('judgeSensitiveWords(str) ', resultS2)
        if (resultS2) {
          for (let i = 0; i < englishWords.length; i += 1) {
            if (resultS2.indexOf(englishWords[i]) !== -1) {
              flag = true
              break
            }
          }
        }
      }
    
      return flag
    }
    
    export default judgeSensitiveWords

    使用如下:

    // @dby-h5-clients/judge-sensitive-words即为npm包中package.json文件中的name
    import judgeSensitiveWords from '@dby-h5-clients/judge-sensitive-words'
    
    onChatMsg: (content) => {
          // console.log('judgeSensitiveWords(str) ', judgeSensitiveWords(content))
          if (judgeSensitiveWords(content)) {
            // 更新到 store
            store.chatList.add({
              msg: content,
              username: store.selfUserInfo.nickname,
              timestamp: Date.now(),
              role: store.selfUserInfo.role,
              uid: store.selfUserInfo.uid,
            })
          } else {
            // 发送到 apps
            stepConnectAPPSServer.finish.then((apps) => {
              apps.sendChat(content)
            })
          }
        },

    这样此功能就实现了。

  • 相关阅读:
    view间传值的方法总结
    初学者关于内存的思考(不断加深不断更新中)
    UITableView刷新数据reLoadData
    rsync安装指南
    Makefile完全解析PART5.使用变量
    Makefile完全解析PART10.使用make更新函数库文件
    windows linux 文件同步 cwrsync工具
    Makefile完全解析PART4.书写命令
    Makefile完全解析PART7.使用函数
    RSYNC安装使用详解
  • 原文地址:https://www.cnblogs.com/chenbeibei520/p/9887984.html
Copyright © 2020-2023  润新知