Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать в один прием (https://javascript.ru/forum/misc/83906-kak-sdelat-v-odin-priem.html)

Белый шум 18.04.2022 16:08

ksa, а почему не указать регулярку прямо в split ?
var val = `[]Заголовок

 


Некий текст описывающий товар.
Продолжение описания на другой строке.




[t]Название; Значение
Жиры;  10
Белки;20

[]Другой заголовок

Простой текст для рассказа о товаре
`
const re = /(\n\s*\n)+/g
console.log(JSON.stringify(val))
const str = val.replace(re, '*')
console.log(JSON.stringify(str))
console.log('Есть лишние элементы', val.split(re))
console.log('Так как нужно', str.split('*'))

console.log('в один присест:', val.split(/\n\s*\n/))


ADD: а, вижу что пытался, но как-то странно...

ksa 18.04.2022 16:52

Цитата:

Сообщение от рони
какой браузер?

Опера.

ksa 18.04.2022 16:54

Цитата:

Сообщение от Белый шум
но как-то странно...

Обычно я делаю регулярку, проверяя ее на replace(), как правильно заменяется - перехожу к split()...

А тут replace() заменяет как надо, а split() давал странный для меня результат.

Белый шум 18.04.2022 19:23

ksa,
split() ищет, а не заменяет, поэтому флаг 'g' для него как-то вообще не к месту. Странно что вообще какой-то результат выдал.

Ну и '+' в конце регулярки не имеет смысла в обоих случаях, т.к. '*' сам по себе жадный: https://learn.javascript.ru/regexp-greedy-and-lazy

ksa 18.04.2022 22:33

Это все уже учли... :)


Часовой пояс GMT +3, время: 00:23.