Javascript按每个单词分隔文本,但也存储开始和结束索引

Javascript按每个单词分隔文本,但也存储开始和结束索引,javascript,regex,parsing,match,Javascript,Regex,Parsing,Match,因此,我试图为文本中的每个单词创建一个数组,该数组应该类似于[word,startIndex,endIndex]。我将用它来替换单词,在检查单词类型之后,找到它的同义词来替换它。但我面临的问题是拆分每个单词并存储开始和结束索引text.match(/\b(\w+)\b/g)可以工作,但我没有获得所需的开始和结束索引。我还尝试了一些函数来解析文本,但结果过于复杂,不能像它应该的那样工作 所以我想知道javascript社区中是否有人有更好的解决方案,或者知道如何为其创建一个简单的函数 这就是我希望

因此,我试图为文本中的每个单词创建一个数组,该数组应该类似于
[word,startIndex,endIndex]
。我将用它来替换单词,在检查单词类型之后,找到它的同义词来替换它。但我面临的问题是拆分每个单词并存储开始和结束索引
text.match(/\b(\w+)\b/g)
可以工作,但我没有获得所需的开始和结束索引。我还尝试了一些函数来解析文本,但结果过于复杂,不能像它应该的那样工作

所以我想知道javascript社区中是否有人有更好的解决方案,或者知道如何为其创建一个简单的函数

这就是我希望发生的事情

输入:

挪威,官方名称为挪威王国,是一个主权国家和单一君主政体,其领土包括斯堪的纳维亚半岛的西部

输出:

[挪威,0,6],“官方”,8,18]

所有单词都是相同的,部分取自:但用于返回匹配长度和匹配本身:

var-wordindex=(s)=>{
var getAllWords=/\b(\w+)\b/g;
var输出=[];
while((match=getAllWords.exec))!=null){
output.push([match[0],match.index,match.index+match[0]。长度-1])
}
返回输出
}
s=‘挪威,官方称为挪威王国,是一个主权国家和单一君主政体,其领土包括斯堪的纳维亚半岛的西部’;

console.log(wordindexes))
我认为您的示例结果有点错误
['Norway',0,6],'official',9,19]
,最后一个应该是8,18

因此,以下可能是您的目标

var str1=`挪威,官方称为挪威王国,是一个主权国家和单一君主政体,其领土包括斯堪的纳维亚半岛的西部';
var regex1=RegExp(/\b(\w+)\b/g);
var array1;
var-ret=[];
while((array1=regex1.exec(str1))!==null){
返回推送([array1[0],array1.index,
array1.index+array1[0]。长度-1]);
}

控制台日志(ret)如果您的目标是替换这些单词,那么有一个更简单的解决方案。 您只需使用回调函数来替换

例如:

const input='挪威,官方名称为挪威王国,是一个主权国家和单一君主政体,其领土包括斯堪的纳维亚半岛的西部'
常量输出=输入。替换(/\b(\w+)\b/g,(字、组、索引)=>{
console.log(字、索引);

如果(word.length您必须显示您使用的代码。我们避免在堆栈溢出时仅询问建议。您能否澄清为什么希望挪威的最后一个索引为6,因为字符串的索引为0,所以它实际上为5?取决于他希望结果如何,以及他所说的lastIndex是什么意思。但我刚刚做了一个快速修改,按照我们的想法来做信息技术