ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант

Как составить регулярное выражение, чтобы получить форматированную строку в JavaScript?

Добрый день. Хочу сделать форматированную строку в JS. Смысл в том, чтобы заменять в строке $1, $2, $n на соответствующие аргументы. Что-то вроде printf
Проблема в том, что могут быть (теоретически) и $1 и $11. И первая замена затрёт вторую подстановку.
Сделал пока так, т.е. шаблон такой - {$1}:
function printf(pattern, ...params){
  for (let i=0; i<params.length;i++){
    let r = new RegExp(`\\{\\$${i+1}\\}`, "gm");
    pattern = pattern.replace(r, params[i]);
  };
  return pattern;
};

Как вариант - делать обход с конца.
Может я изобретаю велосипед, и что-то подобное уже есть уже в JS?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
return pattern.replace(/\$\d+/g, m => params[m.slice(1) - 1] ?? m);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Именно такого нет, а прямая подстановка есть.
x = 1;
y = [1, 2, 3];
z = { t: 5 };
console.log(`x: ${x}, y[1]: ${y[1]}, z.t: ${z.t}, x+y[2]: ${x + y[2]}`);
// x: 1, y[1]: 2, z.t: 5, x+y[2]: 4
Ответ написан
Ваш ответ на вопрос

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

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