Как разделить текст на пары ключ:значение
Пользователь вводит текст в который примерно выглядит так:
"ASB - 21 ASBW - 32 ASDWAE - 345 "
Как правильно разделить на пары ключ значение. Если убрать пробелы, то получается: ASB-21ASBW-32ASDWAE-345 Как правильно подобрать регулярное выражение для split?
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Сначала можно разделить пары ключ-значение по пробелам, которые не соседят с дефисом. Потом эти пары можно разделить на ключ и значение по дефису с пробелами. Если нужно, получившийся двумерный массив можно легко превратить в объект.
const input = 'ASB - 21 ASBW - 32 ASDWAE - 345';
const pairs = input
.split(/(?<!-)\s(?!-)/)
.map(str => str.split(' - '));
console.log(pairs);
const object = Object.fromEntries(pairs);
console.log(object);
Если пробелы не обязательны, тогда можно немного усложнить:
const input = 'ASB-21ASBW - 32 ASDWAE-345';
const pairs = input
.split(/(?<=\d) *(?=[a=z])/i)
.map(str => str.split(/ *- */));
console.log(pairs);
const object = Object.fromEntries(pairs);
console.log(object);