sprintf() function analog in JavaScript as Vue filter and String.prototype.format() extension:
/** * Returns a formatted string. * * @param template * @param values * @return string */ String.format = function (template, ...values) { let i = -1; function callback(exp, p0, p1, p2, p3, p4) { if (exp === '%%') return '%'; if (values[++i] === undefined) return undefined; exp = p2 ? parseInt(p2.substr(1)) : undefined; let base = p3 ? parseInt(p3.substr(1)) : undefined; let val; switch (p4) { case 's': val = values[i]; break; case 'c': val = values[i][0]; break; case 'f': val = parseFloat(values[i]).toFixed(exp); break; case 'p': val = parseFloat(values[i]).toPrecision(exp); break; case 'e': val = parseFloat(values[i]).toExponential(exp); break; case 'x': val = parseInt(values[i]).toString(base ? base : 16); break; case 'd': val = parseFloat(parseInt(values[i], base ? base : 10).toPrecision(exp)).toFixed(0); break; } val = typeof (val) == 'object' ? JSON.stringify(val) : val.toString(base); let sz = parseInt(p1); /* padding size */ let ch = p1 && p1[0] === '0' ? '0' : ' '; /* isnull? */ while (val.length < sz) val = p0 !== undefined ? val + ch : ch + val; /* isminus? */ return val; } let regex = /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g; return template.replace(regex, callback); } String.prototype.format = function() { return String.format(this, ...arguments); } const StringFormat = { install: (Vue, options) => { Vue.filter('format', function () { return String.format(...arguments); }); }, }; export default StringFormat;
Original answer: JavaScript equivalent to printf/String.Format
template string;String.padStartmight be the other thing ppl looking for. (See stackoverflow.com/questions/2686855/… )