Разделение строки через запятую, но игнорирование запятых между точками с запятой с использованием JavaScript - PullRequest
3 голосов
/ 29 марта 2019

Итак, у меня есть эта строка:

apple;banana;orange, kiwi;onion,strawberry, avocado

указанная выше строка должна быть разбита на:

   apple
   banana
   orange, kiwi
   onion
   strawberry
   avocado

Я нашел функцию регулярного выражения, но она разделяет только двойные кавычки ""

   str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

Я пытался заменить "" на;;

   str.split(",(?=(?:[^\;]*\;[^\;]*\;)*[^\;]*$)");

но это не работает, когда я заменил на;

Ответы [ 2 ]

4 голосов
/ 29 марта 2019

Вы можете просто разделить точку с запятой или запятую, если точка с запятой не следует.

var string = 'apple;banana;orange, kiwi;onion,strawberry, avocado',
    array = string.split(/;\s*|,\s*(?!.*;)/);

console.log(array);
2 голосов
/ 29 марта 2019

const str = 'apple;banana;orange, kiwi;onion,strawberry, avocado';

console.log(
  str
  
    // split at each semicolon
    .split(';')
    
    // split at each comma, only for the first and last elements
    .map((x,i,arr) => (i==0 || i==arr.length-1) ? x.split(',') : [x])
    
    // merge the arrays
    .reduce((acc, cur) => [...acc, ...cur], [])

    // trim for clean result
    .map(x => x.trim())
    
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...