【发布时间】:2017-06-14 14:51:45
【问题描述】:
我有一个 200 000 个符号宽的字符串。我需要将\index{term1} 替换为\index0001{term1},将\index{term2} 替换为\index0002{term2} 等。因此,对于每个术语,我都有一个索引号,我需要在\index 之后插入它。如果特定术语遇到多个,则其索引号仍然相同。
这种替换的数量是事先知道的。我也知道每次替换的确切位置。
如何快速完成?
我是 JS 中的新手,在 С++ 中,我会为新字符串分配足够大的缓冲区并在替换之间复制部分,并在其间插入替换。
【问题讨论】:
-
我们希望看到minimal reproducible example中的努力和代码
-
@mplungjan 我更喜欢需要一个想法,我可以用谷歌搜索代码或自己编写代码很容易。性能很重要。
-
这样的问题在 SO 上是题外话。拆分和加入怎么样?我希望看到一个前后示例,其中包含更好的示例术语
-
@mplungjan 我无法拆分,因为我没有单个分隔符。花括号内的部分可能会有很大差异。
-
所以看看循环/替换需要多长时间 -
for (var i=0;i<terms.length;i++) longstring=longstring.replace(new Regex("index"+term[i],"/g"),"\index"+pad(i)+term[i])
标签: javascript string performance memory insert