Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript将标记从字符串提取到数组中_Javascript_Regex - Fatal编程技术网

Javascript将标记从字符串提取到数组中

Javascript将标记从字符串提取到数组中,javascript,regex,Javascript,Regex,我有一个类似这样的字符串:动物园有一只名为{{123}的熊猫,它的颜色是{{234} 我有一个表示每一个令牌的数组,如: [{label:'Ralph',id:'123'},{label:'White and Black',id:'234'}] 我想遍历字符串并用实际标签替换{{token},但我还需要跟踪要替换的字符位置。拉尔夫将成为26号人物。更棘手的情况是:在我用Ralph替换{{123}}后,颜色的文本位置将不同,因为Ralph是5个字符,标记是7个字符 有没有关于解决这个问题的最快方法

我有一个类似这样的字符串:
动物园有一只名为{{123}的熊猫,它的颜色是{{234}

我有一个表示每一个令牌的数组,如:

[{label:'Ralph',id:'123'},{label:'White and Black',id:'234'}]

我想遍历字符串并用实际标签替换
{{token}
,但我还需要跟踪要替换的字符位置。拉尔夫将成为26号人物。更棘手的情况是:在我用
Ralph
替换
{{123}}
后,颜色的文本位置将不同,因为Ralph是5个字符,标记是7个字符


有没有关于解决这个问题的最快方法的想法?

这可能不像你想象的那么难:

var str=“动物园有一只名为{{123}的熊猫,它的颜色是{{234}”;
var数组=[{label:'Ralph',id:'123'},{label:'White and Black',id:'234'}];
对于(var i=0;i警报(str)如果希望跟踪可用于分割每个令牌的令牌位置,则不必关心索引

var str = "The zoo has a panda named {{123}} that is colored {{234}}";
str.split(/\{\{(.+?)\}\}/g);

//["The zoo has a panda named ", "123", " that is colored ", "234", ""]

使用示例

首先尝试解决您的问题。从那以后,试着优化它。什么是正则表达式来获取所有匹配项和索引?我想那是我丢失的部分。@amcdnl为什么是正则表达式
indexOf()
很棒为什么需要索引?那么,在更换代币之前,或者在更换代币之后,您是否需要这些代币,或者……?@hackettoya,我完全想得太多了!indexOf是完美的。有时,与其他人一起集思广益会有所帮助。OP还需要替换项的索引,尽管不清楚原因或以何种形式。@PaulRoub:我猜他需要的是
子字符串的索引,就像他不应该首先使用的方法一样。注释不用于扩展讨论;这段对话已经结束。@bluefeet:实际上,这里有一些有用的评论,与答案()相关。。。。我同意下半场没有增加任何价值。(谢谢你回复)所有的评论都在聊天室里,在这里升起汽车旗有点失控了。由于讨论仍在进行,我提出了动议。