在javascript中解析参数化字符串中的值

时间:2011-01-31 04:27:42

标签: javascript regex string

说我有一个字符串,例如:

var map = "/directory/:id/thumbnails/:size";

我想用它来映射另一个字符串(本质上,与Rails用来定义Routes的东西相同),例如:

var str = "/directory/10/thumbnails/large";

我想“比较”这两个字符串,并返回一个键值对或JSON对象,它代表映射到str的{​​{1}}部分,在我上面的示例中,看起来像:

map

这适合JavaScript正则表达式吗?任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

我发现为此编写代码比解释更容易:)

var map = "/directory/:id/thumbnails/:size";
var str = "/directory/10/thumbnails/large";

var obj = {};

var mapArr = map.split('/');
var strArr = str.split('/');

if (mapArr.length != strArr.length) return false;

for (var i = 0; i < mapArr.length; i++)
{
    var m = mapArr[i];
    var s = strArr[i];

    if (m.indexOf(":") != 0) continue;

    m = m.substring(1);    
    obj[m] = s;
    document.write(m + " = ");
    document.write(obj[m]);
    document.write("<br/>");
}

您还可以在此处看到它=&gt; http://jsfiddle.net/5qFkb/

请问您是否有任何问题,但代码应该是不言自明的。还要注意,通常没有通常的空检查和我通常会放入的东西 - 这只是一个快速而肮脏的概念证明。

哦,如果从我的回答中不清楚的话;不,我不会使用正则表达式,因为那时我有两个问题而不是一个。