如何解析字符串
Text =“Andrey \'s Photos; Vacation”; Font = Arial; Size = 12
到javascript对象对象,如:
var options = {
text: 'Andrey\'s Photos; Vacation',
font: 'Arial',
size: 12
}
我的问题是该值可能包含;
和=
个字符,因此我不能只使用s.split(';')
。但是如果值字符串中有这样的符号,则该值应该用单引号或双引号括起来。因此,应该可以解析该字符串。
答案 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:编辑使用数字类型(如果适用)。现在它只是检查它是否可以被强制转换为数字,而不是试图考虑引号。