使用正则表达式将字符串转换为javascript数组

时间:2013-12-09 13:41:13

标签: javascript regex json

如果之前已经问过这个问题,我会发出警告(这是我的第一个问题)。 我的字符串看起来像这样(在删除空格之后:

"#home #blog description of page here ##article1 ##article2 #contact"

解析时将返回json对象:

{
    home: {},
    blog: {
        description: "description of page here",
        pages: { 
            article1: {},
            article2: {}
        }
    },
    contact: {}
}

我想编写一个函数,它将一个字符串作为参数并返回一个json对象。有什么想法吗?

先谢谢。

1 个答案:

答案 0 :(得分:1)

由于我不确定这项工作是如此明显,所以这是一个建议:

var str = "#home #blog description of page here ##article1 ##article2 #contact";
var m, r = /(#+)([^# ]+)/g, o = {}, s = [o];
while (m = r.exec(str)) {
  var i = m[1].length - 1;
  s[i+1] = s[i][m[2]] = {};
}

所需对象为o

Demonstration

请注意,它并不是全部,因为它是对通用解析解决方案的尝试,并且您提供的输入字符串不提供所有内容(“description”和“pages”键在哪里?)。请将其视为第一步,并鼓励定义更严格的通用格式。