gpt4 book ai didi

javascript - 为每个字母添加跨度,但避免使用 javascript 的 html 标签

转载 作者:可可西里 更新时间:2023-11-01 13:19:44 25 4
gpt4 key购买 nike

我有一个字符串

var string = "Selected<br>Works"

我需要用 <span></span> 包装每个字母,避免包装 <br>跨度内的标签。可以用正则表达式吗?

我做到了:

'Selected<br>Works'.replace(/\S/g, '<span class="letter">$&</span>')

哪个返回:

<span class="letter">S</span>
<span class="letter">e</span>
<span class="letter">l</span>
<span class="letter">e</span>
<span class="letter">c</span>
<span class="letter">t</span>
<span class="letter">e</span>
<span class="letter">d</span>
<span class="letter">&lt;</span>
<span class="letter">b</span>
<span class="letter">r</span>
<span class="letter">&gt;</span>
<span class="letter">W</span>
<span class="letter">o</span>
<span class="letter">r</span>
<span class="letter">k</span>
<span class="letter">s</span>

虽然期望的结果是:

<span class="letter">S</span>
<span class="letter">e</span>
<span class="letter">l</span>
<span class="letter">e</span>
<span class="letter">c</span>
<span class="letter">t</span>
<span class="letter">e</span>
<span class="letter">d</span>
<br>
<span class="letter">W</span>
<span class="letter">o</span>
<span class="letter">r</span>
<span class="letter">k</span>
<span class="letter">s</span>

其他字符串示例是:

  • Art Direction<br>Creative Concept<br>UX/UI Design

  • Digital Branding<br>Website

最佳答案

你可以使用 replace使用一种前瞻性的正则表达式:

var string = "Selected<br>Works",
result = string.replace(/(?![^<]*>)[^<]/g, c => `<span>${c}</span>\n`);

console.log(result);

这也会跳过其他标签,比如 <p></canvas> .尽管如此,它仍无法处理更复杂的 HTML(包括脚本、注释等),正则表达式对此不适用。

关于javascript - 为每个字母添加跨度,但避免使用 javascript 的 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53581316/

25 4 0