dollar
@dollar
Делай добро и бросай его в воду.

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

Есть строки такого вида:
'aaaaaa;bbbbb;;;ccccc;"dddd;eeee";ffff;"gggg;;hhhh";jjjj'

Должно получиться:
[
   "aaaaaa", 
   "bbbbb", 
   "", 
   "", 
   "ccccc", 
   "dddd;eeee", 
   "ffff", 
   "gggg;;hhhh", 
   "jjjj",
]

Банальный .split(";") не подходит.
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
AngReload
@AngReload
Кратко о себе
Регуляркой не получится.
function parse(input) {
  const result = []
  let i = 0;
  while (true) {
    let j
    if (input[i] === '"') {
      j = input.indexOf('"', i + 1) + 1
    } else {
      j = input.indexOf(';', i)
    }
    if (j === -1) {
      result.push(input.slice(i))
      break
    }
    result.push(input.slice(i, j))
    i = j + 1
  }
  return result.map(s => s[0] === '"' ? s.slice(1, -1) : s)
}
const input = 'aaaaaa;bbbbb;;;ccccc;"dddd;eeee";ffff;"gggg;;hhhh";jjjj'
console.log(parse(input))
Ответ написан
@StockholmSyndrome
'aaaaaa;bbbbb;;;ccccc;"dddd;eeee";ffff;"gggg;;hhhh";jjjj'
.match(/(".{0,}?";?)|(.{0,}?;)|(.+$)/g)
.map((item) => item.replace(/(^")|("?;?$)/g, ''));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы