求个文本替换的思路

有如下文本

`回帖`的`最帅`

// 如何替换为

<i>回帖</i>的<i>最帅</i>

也就是:
单数的 ` 替换为 <i>
双数的 ` 替换为 </i>

用js该怎么替换呢?

阅读 2.3k
4 个回答

我自己写的感觉不太好

while (str.includes('`')) {
  str = str.replace('`', ++i % 2 == 1 ? '<i>' : '</i>')
}
function replaceStr (str) {
  var i = -1
  return str.replace(/`/g, function(){
    i++
    return i % 2 ===  0 ? '<i>' : '</i>'
  })
}

replaceStr('`回帖`的`最帅`') // <i>回帖</i>的<i>最帅</i>

你要搞markdown吗,有现成的,当然解决方案还是给你给出来了,用一个正则表达式就行了,考虑了转义,不考虑嵌套

`((\\`)|[\s\S])*?`

一个简单正则就可以搞定的事情

'`回帖`的`最帅`'.replace(/(`)([^`]*)\1/g, '<i>$2</i>')
推荐问题