繁体   English   中英

使用字符开始和结束位置的多个唯一字符串替换

[英]Multiple unique string replacements using character start and ending positions

我有一个文本字符串:

Google is a search engine created by Larry Page and Sergey Brin.

以及命名实体的嵌套数组:

[["Google","ORG",0,5],["search engine","PRODUCT",12,24],["Larry Page","PERSON",37,46],["Sergey Brin","PERSON",52,62]]

我想用 html 元素替换每次出现的命名实体,类似于将Google替换为:

`<div class="ner-tag">${named_entity[i][0]} <span class="ner-tag-type">${named_entity[i][1]}</span></div>`

但是,如果我一个一个地做,那么整个角色的位置就会改变,所以除非我也跟踪它们,否则我将无法使用这些。 有时,您会得到一个包含GoogleGoogle Docs类的字符串,它们是不同的实体,因此我无法轻松进行简单的全局替换。

任何指针?

您可以通过根据索引对替换信息进行降序对数组进行排序来完成此操作,这是一个示例:

 const str = 'Google is a search engine created by Larry Page and Sergey Brin.'; const replacements = [["Google","ORG",0,5],["search engine","PRODUCT",12,24],["Larry Page","PERSON",37,46],["Sergey Brin","PERSON",52,62]]; replacements.sort((a, b) => b[2] - a[2]); const result = replacements.reduce((a, replacement) => { return a.substring(0, replacement[2]) + replacement[1] + a.substring(replacement[3] + 1) }, str); console.log(result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM