我有一个字符串:The zoo has a panda named {{123}} that is colored {{234}}
我有一个代表每个标记的数组,如:
[ { label: 'Ralph', id: '123' }, { label: 'White and Black', id: '234' } ]
我想遍历字符串并将{{token}}
替换为实际标签但是我还需要跟踪我正在替换的字符位置。拉尔夫将成为26号角色。更棘手的情况是:在用{{123}}
替换Ralph
后,颜色的文本位置会有所不同,因为Ralph是5个字符,令牌是7个字符。
有关解决这个问题的最快方法的想法吗?
答案 0 :(得分:7)
这可能不像你想象的那么难:
var str = "The zoo has a panda named {{123}} that is colored {{234}}";
var array = [ { label: 'Ralph', id: '123' }, { label: 'White and Black', id: '234' } ];
for(var i = 0; i < array.length; i++){
str = str.replace("{{" + array[i].id + "}}", array[i].label);
}
alert(str);
只需循环遍历数组,并用所需标签替换字符串中的每个键。如果在字符串中找不到密钥,则replace
根本不执行任何操作。
答案 1 :(得分:0)
如果您想要跟踪令牌位置,可以使用String.prototype.split
拆分每个令牌,那么您不必关心索引。
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", ""]
fiddle使用示例