Расщепление строки в JavaScript - PullRequest
1 голос
/ 24 февраля 2011

Как я могу разбить следующую строку?

var str = "test":"abc","test1":"hello,hi","test2":"hello,hi,there";

Если я использую str.split(","), я не смогу получить строки, содержащие запятые.

Что лучшеразделить строку выше?

Ответы [ 5 ]

3 голосов
/ 24 февраля 2011

Я предполагаю, что это на самом деле:

var str = '"test":"abc","test1":"hello,hi","test2":"hello,hi,there"';

, потому что в противном случае это даже не был бы действительный JavaScript.

Если бы у меня была такая строка, я бы проанализировал ее как неполный JSON, который выглядит так:

var obj = JSON.parse('{'+str+'}');

, а затем использовать как простой объект:

alert(obj.test1); // says: hello,hi

См. DEMO

Обновление 1: Глядя на другие ответы, мне интересно, только ли я вижу, что это неверный JavaScript?

Обновление 2: Кроме того, только я вижу это как JSON без фигурных скобок?

0 голосов
/ 24 февраля 2011

Выполните итерацию один раз над строкой и замените запятые (,) после (") и затем (") на (%) или что-то, что вряд ли можно найти в ваших маленьких строках.Затем разделите на (%) или что вы выбрали.

0 голосов
/ 24 февраля 2011

str.split ( ' ""'); Сложно сказать, учитывая форматирование

если Зед прав, хотя вы можете сделать это (при условии открытия и закрытия {)

str = eval(str);
var test = str.test; // Returns abc
var test1 = str.test1; // returns hello,hi
//etc
0 голосов
/ 24 февраля 2011

Это общая проблема для всех языков: если элементы, которые вам нужны, содержат разделитель, это усложняется.

Самый простой способ - убедиться, что разделитель уникален. Если вы не можете этого сделать, вам, вероятно, придется перебирать цитируемые строки вручную, что-то вроде этого:

var arr = [];
var result = text.match(/"([^"]*"/g);
for (i in result) {
    arr.push(i);
}
0 голосов
/ 24 февраля 2011

Хотя не ясно, с вашим входом. Вот что я могу предложить.

str.split ( ' ""'); и затем добавьте двойные кавычки к каждой строке

...