如何选择和替换输入字符串中的某些单词,而不考虑完整字符串.(详细信息请参阅下文)



我正在为自己的聊天室做一个过滤器
我成功地让它把NSFW单词变成了一堆符号和星号来审查它,但许多人只是在后面加一个反斜杠、句点或其他符号/字母来绕过它,因为我只在单词中加标点符号和符号。他们还想出了一些更有创意的方法,比如eeeNSFWeee,这样过滤器就不会把它算作一个词
是否有一种方法可以使过滤器选择组成字符串中单词的某些字符并替换它们(替换或不替换连接到消息的额外字符(?

过滤器是用javascript和Socket.io 制作的

过滤器代码:

const array = [
"NSFW",
"Bad Word"
"Innapropiate Word"
];
message = message
.split(" ")
.map((word) => (array.includes(word.toLowerCase()) ? "$#!%" : word))
.join(" ");

例如,如果有人键入";坏词"正是这样(上限不是问题(,它会成功地审查它。
但是,如果有人键入";脏话"这将是一个问题,因为它有一个句号,它会被视为一个不同的词,这就是我需要解决的问题。

这里有很多方法。

如果您只想删除符号,可以使用replace((。例如:

word.replace(/[&/\#,+()$~%.`'"!;^:*?<>{}_[]]/g, '')

一般来说,您可以使用正则表达式,它允许您在模式上进行匹配,而不是精确的字符串匹配。

您还可以使用更复杂的模糊匹配库或自定义模糊匹配来实现您的目标。这篇文章可能会有所帮助。

最新更新