我的目标是将重叠的位置拆分以在HTML中使用。例如,我有这段文本:
一 二 三
我想让第二个和第三个单词加粗,并让前两个单词斜体。我们得到了这样的结果:
[
{ "start": 4, "end": 13, "markup": "BOLD" },
{ "start": 0, "end": 7, "markup": "ITALIC" }
]
如果我们希望按位置应用HTML标记,我们得到了这样的结果:
<bold>一 <em>二</bold> 三</em>
看到重叠了吗?<em>开标签被</bold>闭标签打断了。应该是这样的:
<bold>一 <em>二</em></bold><em> 三</em>
以及位置:
[
{ "start": 4, "end": 7, "markup": "BOLD" },
{ "start": 7, "end": 13, "markup": "BOLD" },
{ "start": 0, "end": 7, "markup": "ITALIC" }
]
P.S. 不要在应用标记后担心原始位置发生变化。我写了一个好的解决方案。
我尝试实现一些解决方案,但对我来说似乎是一项艰巨的任务。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您可以使用Javascript DomParser API自动修复HTML结构
const res = (new DOMParser()) .parseFromString( "<bold>One <em>two</bold> three</em>", "text/html" ); console.log(res.body.innerHTML)