获取字符串中的字符索引以进行插值

时间:2015-02-12 14:09:10

标签: javascript string-interpolation

我创建了一个方法,给定一个字符串将找到相对于某个模式的所有插值点some string {{point}}这是有效的,但它不是很优雅,我想知道是否有人知道一个更清洁的更加清洁这样做的方式?

这是我的方法:

_interoplationPoints: function(string){
    var startReg = /{{/gi,
        endReg = /}}/gi,
        indices = {start: [],end: []},
        match;
    while (match = startReg.exec(string)) indices.start.push(match.index);
    while (match = endReg.exec(string)) indices.end.push(match.index);
    return indices;
},

给定一个字符串,它将检查所有起点和终点{{& }}然后它将返回一个对象,其中包含每个{{}}出现的起点和终点。

我这样做的原因是我稍后substring()这些索引具有相关价值。

1 个答案:

答案 0 :(得分:1)

并不简单,但是:

_interoplationPoints: function(string){
    var reg = /{{[^}]*}}/gi,
        indices = {start: [],end: []},
        match;
    while (match = reg.exec(string)) {
        indices.start.push(match.index);
        indices.end.push(match.index + match[0].length - 2);
    }
    return indices;
},

此正则表达式匹配{{后跟任意长度的表达式,该表达式不包含右括号[^}]*,后跟}}。结束索引是通过添加匹配的长度(这会使它超出第二个右括号)然后减去2来计算的,因为有两个结束括号。