Regex / Jquery - вернуть пустые значения

0

Я сортирую файл CSV файла (используя .match()) в запятых вне кавычек, и то, что я до сих пор работаю:

/"[^"]*"|[^,]+/g

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

...,xxx,,xxx,...

и я хочу, чтобы я получил массив из:

[...,xxx, ,xxx,...]

но вместо этого я получаю

[...,xxx,xxx,...]

меняя его на

 /"[^"]*"|[^,]*/g

не работает так хорошо. Есть предположения?

  • 0
    Укажите некоторые примеры входных значений.
  • 0
    Посмотрите на этот ответ: stackoverflow.com/questions/6428053/…
Теги:
expression

4 ответа

1
Лучший ответ

Я попытался изменить свой первоначальный регулярному_выражению также добавить пустые элементы, если у вас есть последовательности ,. Он не добавляет пустой элемент для "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"]

ДЕМО: http://jsbin.com/uzaDeRe/1/edit

  • 0
    Я использую string.match (), а не split, извините за это. Регулярное выражение работает для того, что я делаю, за исключением того, что если в строке есть область «,,», она ничего не возвращает вместо возврата пустого элемента.
  • 0
    Я думаю, я понимаю, что вы хотите сейчас. Проверьте мой отредактированный пост, пожалуйста.
Показать ещё 2 комментария
2

Вы можете использовать функцию замены следующим образом:

var str = yourString.replace(/,/g,', ,')


И после этого вы получите то, что вам нужно, с вашим регулярным выражением, надеюсь, что это поможет. Приветствия.

  • 0
    Это решение добавляет ненужные пробелы в строке.
0

Глупый вопрос: почему вы используете регулярное выражение здесь?

console.log("aaa,xxx,,xxx,,yyy,zzz".split(","));

> ["aaa", "xxx", "", "xxx", "", "yyy", "zzz"]
  • 0
    Поскольку строка, которую я разделяю, выглядит примерно так: "ACP, Something", "Long long, предложение, с запятыми", другими вещами "Так что он будет разбит на запятые внутри кавычек.
0

Не используйте замену. Вместо этого разделите на regexp values.split(/super awesome regexp/) Однако вам, вероятно, нужен лучший контроль. См. Этот ответ для лучшего решения.

  • 0
    это разделяет на каждую не запятую

Ещё вопросы

Сообщество Overcoder
Наверх
Меню