删除彼此相邻的多次出现的字符串--javascript或jquery

时间:2014-07-21 19:17:22

标签: javascript jquery string replace

我有这样的字符串:

var main_str = 'Hi I have |str| way |str||str| too |str||str||str| many breaks';

我需要移除另一个|str|旁边发生的|str|

通缉结果:

var main_str = 'Hi I have |str| way |str| too |str| many breaks |str|';

换句话说,如果彼此相邻的|str|很多,我们会删除除一个之外的所有内容。

2 个答案:

答案 0 :(得分:3)

var main_str = 'Hi I have |str| way |str||str| too |str||str||str| many breaks';
main_str = main_str.replace(/(\|str\|){2,}/g, '|str|');

console.log(main_str);

答案 1 :(得分:1)

另一种简单的方法是.split()基于您计划使用的分隔符的字符串,.filter()表示非空元素,然后.join()使用相同的分隔符:

<强>的JavaScript

var str = "Hi I have |str| way |str||str| too |str||str||str| many breaks";

var x = str.split("|str|").filter(function (d){
    return d.length;
}).join("|str|");

console.log(x)
// returns "Hi I have |str| way |str| too |str| many breaks |str|";

这允许您避免为每个案例制作特定的正则表达式 - 没有转义字符 - 而是通过.split().join()运行变量。

不确定此解决方案是否为faster。在非Chromium浏览器中似乎更快。我猜想Chrome是有效的,因为v8引擎,在运行它之前编译正则表达式一百万次,使正则表达式解决方案更快。

fiddle