Разделить строку с помощью разделителя запятых, но не тогда, когда они заключены в [] - PullRequest
1 голос
/ 03 апреля 2019

У меня есть сценарий, где я читаю файл CSV построчно. Типичным примером строки является

"name,description,str,"['A', 'B', 'C']","  

Мне нужно разбить строку на массив с разделителем-запятой, но не тогда, когда он существует внутри '[]'.

Ожидаемый вывод в массиве:

name  
description  
str  
['A', 'B', 'C']

Примечание. Последнее значение в предоставленной строке ввода пустое. Вот почему нет, и после этого нет текста

Я пытался следовать решению, опубликованному здесь , но у меня это не сработало

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Это нормально работает в вашем случае.

var str = "name,description,str,['A', 'B', 'C'],";

var matches = str.match(/\[.*\]/g);

var arr = str.replace(/\[.*\]/g,'SomeRandomText').split(',');

for(var i = 0; i < arr.length; i++){
  arr[arr.indexOf('SomeRandomText')] = matches.shift();
}

console.log(arr);
0 голосов
/ 03 апреля 2019
.*?[a-zA-Z(\[.*?\]")],

Как это работает

В квадратных скобках я ищу последние допустимые символы перед запятой.Допустимыми являются символы английского слова (a-zA-Z) и символы в квадратных скобках.Символ в квадратных скобках сгруппирован в круглые скобки, поэтому они рассматриваются как один символ и, следовательно, не разделяются запятой внутри него

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