Как разделить запятую, точку с запятой и запятую фразы вокруг точки с запятой? - PullRequest
1 голос
/ 28 марта 2019

Как разделить запятую, точку с запятой и запятую фразы с точки с запятой вокруг, где он должен обрабатывать что-либо между точкой с запятой в качестве разделителя запятой, а также разделить запятую и точку с запятой все вместе в funcion?

Строкаслова:

var words = "apple;banana;apple, banana;fruit"

Функция регулярного выражения, разделенная, и;

 var result = words.split(/[,;]+/);

Результат от этой функции:

[ "apple", "banana", "apple", " banana", "fruit" ]

Но я хочу получитьэто, чтобы иметь «банан, яблоко» и рассматривать его как отдельное значение

[ "apple", "banana, apple", " banana", "fruit" ]

Так возможно ли объединить 2 случая в этой функции для вывода в качестве второго примера?Или, может быть, каким-то другим элегантным способом?

Ответы [ 3 ]

3 голосов
/ 28 марта 2019

Можно использовать комбинацию соответствия и замены.

В матче мы берем две модели, которые у нас есть

  1. Значения между разделителем (?:\w+;\w+,)
  2. Значение не находится между разделителями \w+;?

Теперь, основываясь на сопоставленной группе, мы просто меняем значения в нужном формате, используя replace

let words = `apple;banana;apple, banana;fruit`

let op = words.match(/(?:\w+;\w+,)|\w+;?/g)
              .map(e=>e.replace(/(?:(\w+);(\w+),)|(\w+);?/g, (m,g1,g2,g3)=> g1 ? g1+', '+g2 : g3 ))

console.log(op)
0 голосов
/ 28 марта 2019

Второй вопрос по вопросу «яблоко-банан» (после этого обновления вопроса) попробуйте

words.split(';');

var words = "apple;banana;apple, banana;fruit"

var result = words.split(';');

console.log(result);
0 голосов
/ 28 марта 2019

Array математика легче, чем регулярное выражение.

Цель

apple;banana;apple, banana;fruit> [ "apple", "banana, apple", " banana", "fruit" ]

Удалить пробелы, разделить на ;, разделить на ,.

Решение

const words = 'apple;banana;apple, banana;fruit';
const result = words.split(' ').join('').split(';').join(',').split(',');
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...