说我有一个字符串,例如:
var map = "/directory/:id/thumbnails/:size";
我想用它来映射另一个字符串(本质上,与Rails用来定义Routes的东西相同),例如:
var str = "/directory/10/thumbnails/large";
我想“比较”这两个字符串,并返回一个键值对或JSON对象,它代表映射到str
的{{1}}部分,在我上面的示例中,看起来像:
map
这适合JavaScript正则表达式吗?任何人都可以帮助我吗?
答案 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/
请问您是否有任何问题,但代码应该是不言自明的。还要注意,通常没有通常的空检查和我通常会放入的东西 - 这只是一个快速而肮脏的概念证明。
哦,如果从我的回答中不清楚的话;不,我不会使用正则表达式,因为那时我有两个问题而不是一个。