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

remove strings that occur more than once next to each other - javascript or jquery

本文关键字:字符串 JavaScript jQuery 删除      更新时间:2023-09-26

我有一个这样的字符串:

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|彼此相邻,我们将删除除一个之外的所有。

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);

另一种简单的方法是根据您计划使用的任何分隔符.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()运行变量。

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

小提琴