我有以下字符串。
var str = "abc, abcd, abc, abcf, abc, abc";
我想用 , (space)
从给定的字符串中删除 abc
。基本上,我想要如下所示的输出。
var output = "abcd, abcf";
注意:- 如果可能,请提供正则表达式解决方案(仅替换一个)。
我尝试过的事情:-
1) 第一种方法
var str = "abc, abcd, abc, abcf, abc, abc";
var w = "abc";
var output = str.split(", ").filter(x => !(x === w)).join(", ");
console.log(output);
这里我用了split
,然后是filter
,然后是join
,基本上是3个数组操作。 (在性能方面我认为不好)。
2) 第二种方法
var str = "abc, abcd, abc, abcf, abc, abc";
var w = "abc";
var regex = new RegExp("\\b" + w + "\\b", "ig");
var output = str.replace(regex,"");
output = output.replace(/, , /ig,", ");
output = output.replace(/^, |, $/ig,"");
console.log(output);
这里我用了三次replace
。
有没有可能用更简单的方式实现?
最佳答案
您可以使用此.replace
代码:
var w = 'abc';
var str = "abc, abcd, abc, abcf, abc, abc";
str = str.replace(new RegExp("\\b" + w + "(?:, |$)", "g"), '')
.replace(/, $/, '');
console.log(str);
//=> "abcd, abcf"
- 在第一个
.replace
调用中,我们将单词abc
替换为尾随", "
。 - 我们首先有效地使用这个正则表达式:
/\babc(?:, |$)/
- 在第二个
.replace
调用中,我们删除了字符串中所有剩余的尾随", "
。 - 我们第二次有效地使用这个正则表达式:
/, $/
删除任何遗留的", "
关于javascript - 如何从给定字符串中删除带有额外分隔符的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370221/