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

标签 javascript regex string

假设我有一个字符串,例如:

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

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

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

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

obj = {
    'id'   : '10',
    'size' : 'large'
}

这是否适合 JavaScript 正则表达式?谁能帮帮我?

最佳答案

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

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/>");
}

您还可以在此处查看实际效果 => http://jsfiddle.net/5qFkb/

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

哦,万一我的回答不清楚;不,我不会使用正则表达式,因为那样我会遇到两个问题而不是一个。

关于javascript - 从javascript中的参数化字符串中解析值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4847631/

相关文章:

javascript - 如何在表单中显示错误信息

javascript - 如何增加雷达 Chartjs 标签的大小和系列

c++ - (Qt)同时针对多个正则表达式验证字符串

language-agnostic - 字符串比较 "Logic"

c - 从C语言文件中读取字符串

javascript - JavaScript 模块化方法中 IIFE 和非 IIFE 的区别

javascript - 如何在vue组件中使用setInterval

regex - 在Intellij中查找并替换正则表达式,但是保留一些匹配的正则表达式吗?

JavaScript 正则表达式查找 PHP 标签

C 指向字符串数组的指针