【发布时间】:2019-04-16 03:28:59
【问题描述】:
我有一个字符串(HTML 内容)和一个位置(索引)对象数组。 字符串长度约160万个字符,位置对象约700个。
即:
var content = "<html><body><div class="c1">this is some text</div>...."
var positions = [{start: 20, end: 25}, {start: 35, end: 37}....]
我必须在字符串中的每个开始位置插入一个开始跨度标记,在字符串中的每个结束位置插入一个闭合跨度标记。
最有效的方法是什么?
到目前为止,我已经尝试对位置数组进行反向排序,然后循环遍历,然后使用替换/拼接插入标签,例如:
content = content.slice(0, endPosition) + "</span>" + content.substring(endPosition);
content = content.slice(0, startPosition) + "<span>" + content.slice(startPosition);
(请注意我是如何从末尾开始循环的,以避免弄乱开始/结束位置)。
但这需要大约 3 秒,这对我来说似乎很慢而且效率低。
有什么更有效的方法来做到这一点?
【问题讨论】:
-
位置是指线吗?还是字符串中的索引?
-
位置表示索引
标签: javascript string loops