每次匹配时在两个子字符串之间替换子字符串

时间:2020-06-13 18:29:47

标签: javascript

JavaScript中是否有更快的内置函数来代替两个子字符串之间的substring2,该子字符串2的序列号为substring2的长度,而不是循环整个字符串并用手替换它。

示例:

之前的子字符串:"before"

后面的子字符串:"after"

如果substring2 is length of 3 =>替换为string 011

如果substring2 is length of 6 =>替换为string 999999 字符串:

"beforeoooafter beforeaftebefore123456afteradf"

ooo也将是substring2和123456

ooo => 011(由于长度3)

123456 => 999999(由于长度6)

substring2是前后字符串之间的匹配项

结果:

"before011after beforeaftebefore999999afteradf"

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式和替换函数:

const input = "beforeoooafter beforeaftebefore123456afteradf";

const expectedOutput = "before011after beforeaftebefore999999afteradf";

const output = input.replace(/(before(?:(?!before|after).)*after)/g, function(m) {
  const before = 'before';
  const after = 'after';
  const middle = m.substr(before.length, m.length - after.length - before.length);
  if (middle.length === 3) {
    return before + '011' + after;
  } else if (middle.length === 6) {
    return before + '999999' + after;
  }
  return m;
});

console.log(output);
console.log(output === expectedOutput);

相关问题