Parse option string - PullRequest
       4

Parse option string

4 голосов
/ 17 октября 2011

Как я могу разобрать строку как

Text = "Фотографии Андрея; Каникулы"; Шрифт = Arial; Размер = 12

в JavaScriptобъект объект как:

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

Моя проблема в том, что значение может содержать ; и = символов, поэтому я не могу просто использовать s.split(';').Но если в строке значений есть такие символы, значение должно быть заключено в одинарные или двойные кавычки.Таким образом, разбор этой строки должен быть возможен.

1 Ответ

3 голосов
/ 17 октября 2011

Предполагая, что ответ - нет:

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 2: отредактировано для использования числового типа, если применимо. Прямо сейчас он просто проверяет, можно ли привести его к числу, вместо того, чтобы пытаться рассмотреть кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...