一、检测是否存在敏感词
效果:输入一个字符串,检测该字符串是否存在敏感词,返回Boolean。
// 敏感词数组
const sensitiveWordsArray = ['你妹的','你大爷','傻'];
/**
* 检测方法
* @param {String} str 检测的字符
* @return {Boolean} 是否存在敏感词
* */
function filtion(str) {
for (let i = 0; i < sensitiveWordsArray.length; i++) {
for (let j = 0; j <= str.length - sensitiveWordsArray[i].length; j++) {
//根据敏感字符个数截取str的字符进行判断
if (sensitiveWordsArray[i] == str.slice(j, j + sensitiveWordsArray[i].length)) {
return true
}
}
}
return false
}
调用filtion示例
let test_01 = flition('你大爷');
console.log(test_01); // true
二、检测到后输入指定字符替换该敏感词
效果:输入一个字符串和替换字符,检测该字符串是否存在敏感词,存在则用替换词替换掉敏感词,返回新的字符串。
/**
* 替换
* @param {String} str 检测的字符
* @param {String} char 替换的字符
* @return {String} 替换后的文字
*/
function replace(str, char) {
//str: 需要进行替换的字符串
//char: 需要替换的字符
//遍历敏感词库
for (let i = 0; i < sensitiveWordsArray.length; i++) {
for (let j = 0; j <= str.length - sensitiveWordsArray[i].length; j++) {
//根据敏感字符个数截取str的字符进行判断
if (sensitiveWordsArray[i] == str.slice(j, j + sensitiveWordsArray[i].length)) {
let c = "";
for (let k = 0; k < sensitiveWordsArray[i].length; k++) {
c += char;
}
str = str.slice(0, j) + c + str.slice(j + sensitiveWordsArray[i].length);
}
}
}
return str;
}
调用replace示例
let test_02 = replace('你怎么能这样,去你大爷的','*');
console.log(test_02); // 你怎么能这样,去***的
全部代码
const sensitiveWordsArray = ['你妹的','你大爷','傻'];
/**
* 检测
* @param {String} str 检测的字符
* @return {Boolean} 是否存在敏感词
* */
function flition(str) {
for (let i = 0; i < sensitiveWordsArray.length; i++) {
for (let j = 0; j <= str.length - sensitiveWordsArray[i].length; j++) {
//根据敏感字符个数截取str的字符进行判断
if (sensitiveWordsArray[i] == str.slice(j, j + sensitiveWordsArray[i].length)) {
return true
}
}
}
return false
}
/**
* 替换
* @param {String} str 检测的字符
* @param {String} char 替换的字符
* @return {String} 替换后的文字
*/
function replace(str, char) {
//str: 需要进行替换的字符串
//char: 需要替换的字符
//遍历敏感词库
for (let i = 0; i < sensitiveWordsArray.length; i++) {
for (let j = 0; j <= str.length - sensitiveWordsArray[i].length; j++) {
//根据敏感字符个数截取str的字符进行判断
if (sensitiveWordsArray[i] == str.slice(j, j + sensitiveWordsArray[i].length)) {
let c = "";
for (let k = 0; k < sensitiveWordsArray[i].length; k++) {
c += char;
}
str = str.slice(0, j) + c + str.slice(j + sensitiveWordsArray[i].length);
}
}
}
return str;
}
let test_01 = flition('你大爷');
console.log(test_01); // true
let test_02 = replace('你怎么能这样,去你大爷的','*');
console.log(test_02); // 你怎么能这样,去***的
第三方库的使用
很多人因为找不到更多的敏感词,自己一个个添加敏感词的写又太麻烦,所以我在去年去网站爬了一点敏感词下来,敏感词类包括了 f罪、z治、b力、s情、x腥、r骂等。因考虑到词库记录不完整,为了方便使用者后续自行添加,打算不进行压缩。
该npm
安装插件(该插件是我本人写的,并上传至npm的,放心使用)
npm i verification-sensitive
使用方式
/ 导入敏感词过滤方法
import {replace,filtion} from "verification-sensitive";
// 使用replace 返回值为 字符串(被替换后的字符串)
let str = replace("检索词","替换字符");
// 使用 返回值为 Boolean类型(true含有敏感词,false无敏感词)
let flag = filtion("检索词");
另外,要是有更好的词库或方法,可以@我一下