archi0001
@archi0001

Как заменить все вхождения на различные значения?

format(123456789, '(###)-###-###' )
как заменить все знаки решётки на значение первого аргумента ?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 2
dollar
@dollar
Делай добро и бросай его в воду.
Очень просто. Решение «в лоб»:
  1. Разложить число на цифры (в виде массива)
  2. Разложить шаблон на массив кусков (где разделителем будет "#")
  3. Убедиться, что количество цифр и «дырок» - совпадает
  4. Склеить два массива, чередуя элементы (в цикле или нативной функцией)

Как по мне, никакой из пунктов не может вызвать трудности даже у начинающего программиста.

P.S. Есть варианты решения лишь с одним массивом или вообще без них.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
const format = (value, mask) => {
  let i = 0;
  return mask.replaceAll(/#/g, () => (i < value.length ? value[i++] : '#'));
}
format('123456789', '(###)-###-###'); // "(123)-456-789"
format('123', '(###)-###-###'); // "(123)-###-###"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы