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?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const printf = (str, ...params) =>
  str.replace(/\$(\d+)/g, (m, g1) => params[~-g1] ?? 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
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 08:04
1 руб./за проект
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект