[英]Remove all occurrences of charaters from an array from a string
我正在构建一个应用程序,需要从其输入中裁剪大量文本,我想将“正在删除”列表移动到一个数组中,以使其易于管理。
const badWords = ['jamie', 'hutber'];
const naughtyString = 'Jamie Hutber everybody likes Jamie Chocolate';
预期输出为:
'everybody likes Chocolate'
因此,如果不清楚,我想从字符串naughtySting中删除在badWords中出现的所有事件...
您在正确的路径上,将句子拆分为一个数组,删除所有出现的内容:
let goodSentence = naughtyString.split(' ').filter(s => badWords.indexOf(s.toLowerCase()) === -1).join(' ');
如果它是专门针对badWords的,则可以有以下内容:
var result = naughtyString;
badWords.forEach(function(badWord){
result = result.split(new RegExp(badWord,'i')).join(Array(badWord.length).join("*"));
});
结果==“ **** *****每个人都喜欢****巧克力”
对badWords
单次迭代:
const badWords = ['jamie', 'hutber']; let naughtyString = 'Jamie Hutber everybody likes Jamie Chocolate'; badWords.forEach(bad => { let rgx = new RegExp(bad, 'ig'); naughtyString = naughtyString.replace(rgx, ''); }); console.log(naughtyString);
我想出了另一个更容易理解的想法:
const badWords = ['jamie', 'hutber']; let naughtyString = 'Jamie Hutber everybody likes Jamie Chocolate'; const rgx = new RegExp(badWords.join('|'), 'gi'); let cleanString = naughtyString.replace(rgx, ''); console.log(cleanString);
您还需要检查大小写。.由于您的badwords均为小写字母,但是您的搜索字符串混合使用大小写。
const badWords = ['jamie', 'hutber']; const naughtyString = 'Jamie Hutber everybody likes Jamie Chocolate'; // 'everybody likes Chocolate' function notBadWord(f) { return !badWords.includes(f.toLowerCase()); } var out = naughtyString.split(/\\s/).filter(notBadWord).join(" "); console.log(out);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.