我有这样的字符串:
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|
很多,我们会删除除一个之外的所有内容。
答案 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引擎,在运行它之前编译正则表达式一百万次,使正则表达式解决方案更快。