通过用标签替换“`”来包装某些单词

时间:2019-11-27 12:48:03

标签: javascript html string

我正在尝试复制一些“ markdown-行为”。我正在尝试向JS提供一些文本,例如,像这样的字符串:

"This is some very very fancy `code example` to try out yourself!"

我想用`替换开头的<div class="code">,并用`替换终止的"</div>",以突出显示某些内容。 我已经尝试过使用.replace()来执行此操作,但是如果没有包含终止符`之后的文本,就无法使其正常工作。

我在这里做错了什么吗?除了通过char手动遍历String char之外,还有其他更优雅的解决方案吗?

非常感谢 Pasu-

3 个答案:

答案 0 :(得分:3)

尝试一下:

var x = "Hello `code` World!".replace(/`([^`]+)`/g, "<div class='code'>$1</div>");

console.log(x);

答案 1 :(得分:2)

您可以尝试使用正则表达式替换它。

var str = 'This is some very very fancy `code example` to try out yourself!';

document.body.innerHTML += str.replace(/`(.*)`/, '<div class="code">$1</div>')
.code {
  color: red;
}

(.*)的意思是:任何字符一次或多次。

$1的意思是:第一组的内容(在()内)


或者,如果您要更换1次以上,可以尝试一下。

var str = 'This is some `code example 1` and very very fancy `code example 2` to try out yourself!';

document.body.innerHTML += str.replace(/`(.*?)`/g, '<div class="code">$1</div>')
.code {
  color: red;
}

答案 2 :(得分:0)

您可以使用此调用将something替换为<div class="code">something</div>

someString.replace(/`([^`]*)`/, (match, p1) => `<div class="code">${p1}</div>`);