繁体   English   中英

从字符串中删除数组中所有出现的字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM