Все мы знаем и используем PHP/С функцию printf для вывода строки с заполненными параметрами в нужном нам формате.
Но сегодня в эру Javascript приложений нам нужна такая функция и на фронтенде, то есть нужна функция javascript printf.

Как сделать javascript printf?

Можно сделать при помощи обычной функции, но круче сделать при помощи расширения функционала объекта String, так, чтобы можно было использовать в дальнейшем конструкцию подобную привычной «строка для обработки».replace(»,»). То есть сделаем функцию javascript sprintf для объекта String, через прототипы так, чтобы можно было вызвать:

console.log("Строка для обработки".printf(arg1, arg2,...));

Итак, приступим к написанию кода для javascript printf:

String.prototype.printf = function() {
    var formatted = this;
    for( var arg in arguments ) {
        formatted = formatted.replace("{" + arg + "}", arguments[arg]);
    }
    return formatted;
};

Как использовать эту функцию для javascript printf?

Для того, чтобы вывести данные на javascript printf нужно вызвать функцию в таком виде:

alert("{0} — это столица, но {1} тоже!".printf("Москва", "Питер"));

В итоге мы должны получить строку:

Москва — это столица, но Питер тоже.

Конечно, вместо alert можно использовать функцию в любых местах.

Количество параметров не ограничено. Да, функция немного более проста, чем её аналог на PHP/С, но тем, не менее успешно работает.

Как работает наш варант javascript printf?

Функция работает достаточно просто, и примитивно.
В первой строке мы записываем в переменную formatted текст, который нужно форматировать при помощи javascript sprintf.
Далее в цикле по всем параметрам, которые переданы пользователем мы делаем замену подстроки с параметром на значение параметра.
В итоге, в конце всего цикла, мы возвращаем первоначальную строку, но уже с замененными параметрами.

Если хотите узнать что-то новое и интересное, то все самое интересное тут. Сайт про авто, путешествия, музыку, стиль, спорт и многое другое.