删除相邻出现多次的字符串-javascript或jquery
我有一根这样的线:删除相邻出现多次的字符串-javascript或jquery,javascript,jquery,string,replace,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 |紧挨在一起,我们将除去一个以外的所有元素。另一种简单的方法是.s
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 |
紧挨在一起,我们将除去一个以外的所有元素。另一种简单的方法是.split()
根据您计划使用的任何分隔符对字符串进行分割,对非空元素进行筛选()
,然后使用相同的分隔符进行.join()
:
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);
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()
运行变量
不确定此解决方案是否有效。在非Chrome浏览器中,它似乎更快。我猜想Chrome是高效的,因为v8引擎,在运行它一百万次之前编译一个正则表达式,使正则表达式解决方案更快
另一种简单的方法是基于您计划使用的任何分隔符
.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()
运行变量
不确定此解决方案是否有效。在非Chrome浏览器中,它似乎更快。我猜想Chrome是高效的,因为v8引擎,在运行它一百万次之前编译一个正则表达式,使正则表达式解决方案更快
你的回答也很好:)但我想另一个是easier@user3425760这个解决方案虽然稍显冗长,但速度更快。要慢多少?在我的机器上,超过100万次迭代需要1200毫秒。另一个需要700毫秒。@SeanBright我做了一个测试。如果您事先编译一个正则表达式并重用它,您的可能会更快(但您在回答中没有这样做)。不过,您的浏览器可能正在对其进行优化。看来是Safari造成的,而不是regex。请你更新你的回答中的陈述以反映这一事实好吗?谢谢你。你的回答也很好:)但我想另一个是easier@user3425760这个解决方案虽然稍显冗长,但速度更快。要慢多少?在我的机器上,超过100万次迭代需要1200毫秒。另一个需要700毫秒。@SeanBright我做了一个测试。如果您事先编译一个正则表达式并重用它,您的可能会更快(但您在回答中没有这样做)。不过,您的浏览器可能正在对其进行优化。看来是Safari造成的,而不是regex。请你更新你的回答中的陈述以反映这一事实好吗?非常感谢。