2017-02-22 2 views
4

Я хочу, чтобы разобрать следующие строкиузел js, как разбирать строки вроде этого?

3693, "Toxic Avenger, The (1985)", Комедии | Ужасы

в

3693,
«Toxic Avenger , The (1985) ",
Комедия | Ужасы.

Аналогично, следующие

161944, Последний кирпичника в Америке (2001), драма

должен быть проанализирован на

The Последний кирпич в Америке (2001)

Драма

Я не могу сделать это путем разделения запятой, так как запятая в «».

Проработанное решение: LS05 предложил мне использовать «подстроку», поэтому я сделал это, и он работал идеально. это.

var pos1 = line.indexOf(','); 
    var line = line.substring(pos1+1); 

    pos1 = line.indexOf(','); 
    pos2 = line.lastIndexOf(','); 

    let movie_id = line.substring(0,pos1); 
    let movie_tag = line.substring(pos1+1,pos2); 
    let movie_timespan = line.substring(pos2+1); 

Благодаря LS05 :)

+0

Что это за данные? –

+1

Возможно, вы можете подстроить первую и последнюю часть, так что заголовки останутся – LS05

+0

@alim oh ok, я основываю свой комментарий на ваших примерах данных. – LS05

ответ

6

Вы можете использовать регулярное выражение для разбора вашей строки, которая исключит запятые, которые находятся внутри цитирует

var str = '3693,"Toxic Avenger, The (1985)",Comedy|Horror'; 
console.log(str.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g).join("\n")); 

Demo (см кредиты, если вы хотите знать, как выше регулярные выражения работы)

Насколько код идет, я пытаюсь разделить вашу строку, игнорируя запятые, находящиеся внутри строки, и позже мы снова присоединяемся к элементам массива, используя новый символ строки \n

Credits for Regex

+0

Это удаляет ',' в конце строки. 'join (", \ n ")' может помочь – RaR

+0

, у него есть проблема.не может разобрать эту строку «161944,« Последний кирпич в Америке »(2001),« Драма ». удалили строки, если их нет. – arslan

+0

Я добавил еще один пример. не могли бы вы проверить это, пожалуйста! – arslan

2

Вы можете использовать CSV парсер такой, как papa parse или если вы чувствуете, что библиотека третья сторона не требуется, вы можете взглянуть на this function.

Смежные вопросы