解析选项字符串

Parse option string

本文关键字:字符串 选项      更新时间:2023-09-26

如何解析字符串

文本= "安德烈' ' s照片;假期";字体= Arial;大小= 12

到javascript对象对象,如:

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

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

假设答案是否定的:

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;
}

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

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