使用javascript查找下一个并在summer-note编辑器中替换

kee*_*rti 8 javascript editor

我希望java脚本代码添加自定义按钮以便在下一步找到并在夏天注释编辑器中替换,如下图所示 -

在此输入图像描述

我通过使用"gi"正则表达式全局替换文本并使用"i"正则表达式逐个替换所有单词获得成功.但我无法使用find next跳过单词然后替换下一个单词.

请帮忙.提前致谢.

jmc*_*riz 3

您可以将一个函数传递到正则表达式替换语句中,在该语句中您可以仅替换此处所示方法中的某个第 n 个匹配项。当有人Find Next第一次点击新搜索时,它应该创建一个变量来跟踪n,开始时将其设置为 1。每次他们Find Next再次点击,都会增加您的值n。当他们单击 时ReplacereplaceNth使用该值进行调用,然后增加 的值n并转到下一个结果。

这里的第一个调用表明你可以使用这个函数作为一个包罗万象的东西 - 如果你不通过n,它只会替换所有内容。如果您确实通过了n,它将取代那一场比赛。

function replaceNth(str, rgx, replacement, n){
  if(n) {
    let matchIndex = 0
    return str.replace(rgx, match => {
      return ++matchIndex == n ? replacement : match
    })
  } else {
    return str.replace(rgx, replacement)
  }
}

let sampleText = document.querySelector('p').textContent

console.log(replaceNth(sampleText, /cow/gi, 'MOO'))

console.log(replaceNth(sampleText, /cow/gi, 'MOO', 2))
Run Code Online (Sandbox Code Playgroud)
<p>This is sample cow text with the word cow placed repeatedly cow within it.</p>
Run Code Online (Sandbox Code Playgroud)