解析选项字符串

时间:2011-10-17 06:25:23

标签: javascript parsing

如何解析字符串

  

Text =“Andrey \'s Photos; Vacation”; Font = Arial; Size = 12

到javascript对象对象,如:

var options = {
  text: 'Andrey\'s Photos; Vacation',
  font: 'Arial',
  size: 12
}

我的问题是该值可能包含;=个字符,因此我不能只使用s.split(';')。但是如果值字符串中有这样的符号,则该值应该用单引号或双引号括起来。因此,应该可以解析该字符串。

1 个答案:

答案 0 :(得分:3)

假设答案是否定的:

var s = 'Text="Andrey\'s Photos; Vacation";Font=Arial;Size=12;SingleQuoted=\'The dog said "Foo"\'';
var re = /(.*?)=(?:"(.*?)"|'(.*?)'|([^;]*?))(?:;|$)/g;
var match;

var options = {}
while(match = re.exec(s))
{  
    var string_val = match[2] || match[3] || match[4];
    var num_val = parseFloat(string_val);
    var val = isNaN(num_val) ? string_val : num_val;
    options[match[1].toLowerCase()] = val;
}

编辑:编辑允许使用'或'作为分隔符。但是,你仍然无法逃脱。

编辑2:编辑使用数字类型(如果适用)。现在它只是检查它是否可以被强制转换为数字,而不是试图考虑引号。