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

时间:2018-03-19 10:02:27

标签: javascript editor

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

enter image description here

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

请帮忙。提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以将函数传递到正则表达式替换语句中,在该语句中,您只能在此处显示的方法中替换某个第n个匹配项。当有人在新搜索中第一次点击Find Next时,它应该创建一个变量来跟踪n,将其设置为等于1开始。每次他们再次点击Find Next时,请增加n的值。当他们点击Replace时,请使用该值调用replaceNth,然后增加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))

<p>This is sample cow text with the word cow placed repeatedly cow within it.</p>
&#13;
&#13;
&#13;