чтобы разделитель тоже попадал в результирующий массив?
напишите свой)
стало скучно, написал быренько. если что-то не так понял - скажите. легко переписывается под массив, но мне захотелось так) function* split (str, sep, sepToStart) { const length = str.length; const additive = sepToStart ? 0 : 1; let start = 0; for (let i = 0; i < length; i++) { if (str[i] === sep) { const newStart = i + additive; yield str.slice(start, newStart) start = newStart; } } yield str.slice(start, length); } for (res of split("a,b,c", ",")) { console.log(res) } console.log([...split("a,b,c", ",", true)])
Спасибо, я уже нашел другой способ решить вопрос)
эх, зря старался(
а какой, если не секрет?
Сперва делаю обычный сплит с разделителем '', после чего перебираю массив, проверяя каждый элемент на то, является ли это нужным значением или нет, если является - то добавляю пробелы по бокам и добавляю в строку объявленную выше, если нет, то просто добавляю. После чего, можно будет обычным сплитом пройтись с разделителем ' '
вроде понял, окей)
Вроде этого? "1,2,3".split(/(,)/)
так блин, чёртовы регулярки(
хотя это вообще другое решение, кажись, я не так вопрос понял
Я тоже не понял. Без примеров туго.
ну и ладно, зато мне второй раз в жизни в JS пригодились итераторы :D
Очень похоже на правду
признавайтесь, что у вас там за дела происходят :D
Подскажи, пожалуйста, как это работает? Почему в данном случае, ',' тоже вернется в массиве?
If separator is a regular expression with capturing parentheses, then each time separator matches, the results (including any undefined results) of the capturing parentheses are spliced into the output array. (src)
Стало понятнее. Только непонятно, почему регулярка /([+-//×])/ делит еще и по точке
- не экранировано
/([+\-/×])/ Спасибо. осталась одна проблема с тем, что почему-то после одного из символов идет пустой элемент массива.
Это уже фиг знает как решать. Только костыль с .filter(Boolean)
Обсуждают сегодня