vue 敏感詞過濾 前端
根據正則來進行過濾 敏感詞是一個陣列 詞比較多 專門存放在js檔案里面 vue用 export 匯出 再引入到需要用的組件里
judgeBadWord(obj) {
let word = words.words //獲取敏感詞的陣列
//進行遍歷
for (let i=0;i<word.length;i++) {
/*替換全部空格*/
// let arr = obj.replace(/\s+/g,"")
this.contents = obj
//gi g全域 i不分大小寫
let reg = new RegExp(word[i],"gi")
//用indexOf 判斷是否包含
if(this.contents.indexOf(word[i]) !== -1){
let result = this.contents.replace(reg,"***")
this.contents = result
return true
}
}
}
//在發送訊息時進行呼叫就行了
剛開始這樣寫以為沒啥問題 但是當同一句話中出現多個不同敏感詞時 后面的會過濾不掉 進行改進了一下
judgeBadWord(str,badWord){
//trim() 方法不會改變原始字串 去掉首尾空白符
this.contents = str.trim()
var re = ''
//正則過濾 模版字串 \b 是一個整單詞
for(var i=0;i<badWord.length;i++){
if(i==forbiddenArray.length-1)
re += `\\b${badWord[i]}\\b`
else
re += `\\b${badWord[i]}\\b`+"|"
}
var reg = new RegExp(re,"gi")
this.contents=this.contents.replace(reg,"***")
return this.contents
}
到這了以為可以結束了 可是敏感詞里有 兩個英語單詞組成
hellow 是敏感詞 hellow word 也是敏感詞 輸入hellow word 的時候 helllow會變成*** word不會 不能自己去把陣列里面的字串自己調位置吧
就 把陣列進行了 排序
//這里用map可以進行鏈式呼叫 字串的length 從高到低排序
let word = words.words
this.rtn = word.map(i => ({raw: i, len: i.length}))
.sort((p, n) => n.len - p.len)
.map(i => i.raw)
只是記錄一下 其中性能方面還可以優化一下 不足之處 還請多多關照!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/197233.html
標籤:其他
上一篇:簡單制作一個百度注冊頁面
下一篇:css概述(續2)
