我想使用this list of bad words进行输入过滤。它现在是一个简单的列表,但我需要将其转换为JSON以供我的服务器使用。
我不想浏览每一行并添加引号和,
。是否有正则表达式或快速方式将" ",
添加到txt
文件中的每一行?
这样:
2g1c
2 girls 1 cup
acrotomophilia
alabama hot pocket
alaskan pipeline
变为
"2g1c",
"2 girls 1 cup",
"acrotomophilia",
"alabama hot pocket",
"alaskan pipeline",
...
答案 0 :(得分:1)
您所要做的就是在新行中拆分字符串并删除数组中的最后一项(因为它是空的)。
var txt = '2g1c\n2 girls 1 cup\nacrotomophilia\nalabama hot pocket\nalaskan pipeline\n';
var array = txt.split('\n').slice(0, -1);
console.log(array)
然后,您可以使用Array.prototype.some
作为谓词方法,以确定给定字符串是否包含一个或多个列入黑名单的单词。
var txt = '2g1c\n2 girls 1 cup\nacrotomophilia\nalabama hot pocket\nalaskan pipeline\n';
var array = txt.split('\n').slice(0, -1);
var input1 = 'not bad';
var input2 = 'An alaskan pipeline is quite creative...';
var input1HasBadWords = array.some(function (word) {
return input1.indexOf(word) > -1;
});
var input2HasBadWords = array.some(function (word) {
return input2.indexOf(word) > -1;
});
console.log('input1 is: ' + input1HasBadWords);
console.log('input2 is: ' + input2HasBadWords);
你的控制器看起来像这样:
const fs = require('fs');
app.post('/route', (req, res) => {
fs.readFile('/etc/hosts', 'utf8', (err, data) => {
if (err) {
res.sendStatus(500);
}
const badWords = data.split('\n').slice(0, -1);
const hasBadWords = badWords.some((word) => {
return req.body.input.indexOf(word) > -1;
});
if(hasBadWords) {
res.send('Dirty mouth? Clean it with orbit!');
} else {
res.send('You are very polite');
}
});
});
答案 1 :(得分:1)
使用反引号 `
var txt=`2g1c
2 girls 1 cup
acrotomophilia
alabama hot pocket
alaskan pipeline`;
var arrayUntrimmed = txt.split("\n");
var array=arrayUntrimmed.map(function(a){return a.trim()});
(注意:Firefox 34和Chrome 41支持此ECMAScript 6功能)
答案 2 :(得分:0)
我想最简单的方法就是使用软件。使用SublimeText
我花了30秒答案 3 :(得分:0)
您可以使用readline模块。阅读并在每一行中添加引号。
readline:https://nodejs.org/api/readline.html