javascript - 如何从给定字符串中删除带有额外分隔符的单词?

标签 javascript regex replace

我有以下字符串。

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 调用中,我们删除了字符串中所有剩余的尾随 ", "
  • 我们第二次有效地使用这个正则表达式:/, $/ 删除任何遗留的 ", "

Performance Test Link

关于javascript - 如何从给定字符串中删除带有额外分隔符的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370221/

相关文章:

javascript - $ 引用未定义

java - 使用 String.match() 时出现 PatternSyntaxException

linux - 删除 dos 行尾并再次加入行备份的最佳工具

javascript - 为 OpenLayers 转换 GPS 坐标

javascript - 如何按键对对象数组进行分组?

javascript - 在reactjs中添加两个数字

java - 分割字符串而不丢失分割字符

javascript - 切断文件名的扩展名

python - 在字符串中的子字符串中查找值?

javascript - 用 1 个文件替换文件夹中的所有文件,但在 Gulp 中保留它们的原始名称