Я сортирую файл CSV файла (используя .match()
) в запятых вне кавычек, и то, что я до сих пор работаю:
/"[^"]*"|[^,]+/g
Единственная проблема заключается в том, что существует несколько областей, где строка может быть примерно такой:
...,xxx,,xxx,...
и я хочу, чтобы я получил массив из:
[...,xxx, ,xxx,...]
но вместо этого я получаю
[...,xxx,xxx,...]
меняя его на
/"[^"]*"|[^,]*/g
не работает так хорошо. Есть предположения?
Я попытался изменить свой первоначальный регулярному_выражению также добавить пустые элементы, если у вас есть последовательности ,
. Он не добавляет пустой элемент для "a",
, но я предполагаю, что не то, что вы хотите
Регулярное выражение:
/"[^"]*"|[^,]+|(?=,,)/g
Пример использования:
var input = 'ACP,Something,,"Some long, sentence, with commas",other things';
var matches = input.match(/"[^"]*"|[^,]+|(?=,,)/g);
console.log(matches); // ["ACP", "Something", "", "\"Some long, sentence, with commas\"", "other things"]
Вы можете использовать функцию замены следующим образом:
var str = yourString.replace(/,/g,', ,')
И после этого вы получите то, что вам нужно, с вашим регулярным выражением, надеюсь, что это поможет. Приветствия.
Глупый вопрос: почему вы используете регулярное выражение здесь?
console.log("aaa,xxx,,xxx,,yyy,zzz".split(","));
> ["aaa", "xxx", "", "xxx", "", "yyy", "zzz"]
Не используйте замену. Вместо этого разделите на regexp values.split(/super awesome regexp/)
Однако вам, вероятно, нужен лучший контроль. См. Этот ответ для лучшего решения.