求个文本替换的思路

有如下文本

`回帖`的`最帅`

// 如何替换为

<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>')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题