Potřebuji funkci JavaScriptu, která může převzít hodnotu a dosadit ji na danou délku (potřebuji mezery, ale stačilo by cokoliv). Našel jsem toto:
Kód:
String.prototype.pad = function(l, s, t){ return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length) + 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2)) + this + s.substr(0, l - t) : this; };
Příklad:
var s = "Jonas"; document.write( '<h2>S = '.bold(), s, "</h2>", 'S.pad(20, "[]", 0) = '.bold(), s.pad(20, "[]", 0), "<br />", 'S.pad(20, "[====]", 1) = '.bold(), s.pad(20, "[====]", 1), "<br />", 'S.pad(20, "~", 2) = '.bold(), s.pad(20, "~", 2) );
Ale nemám ponětí, co to sakra dělá, a zdá se, že mi to nefunguje.
Odpověď
Toto řešení jsem našel zde a toto je pro mě mnohem jednodušší:
var n = 123 String("00000" + n).slice(-5); // returns 00123 ("00000" + n).slice(-5); // returns 00123 (" " + n).slice(-5); // returns " 123" (with two spaces)
A zde jsem udělal rozšíření objektu string:
String.prototype.paddingLeft = function (paddingValue) { return String(paddingValue + this).slice(-paddingValue.length); };
Příklad použití:
function getFormattedTime(date) { var hours = date.getHours(); var minutes = date.getMinutes(); hours = hours.toString().paddingLeft("00"); minutes = minutes.toString().paddingLeft("00"); return "{0}:{1}".format(hours, minutes); }; String.prototype.format = function () { var args = arguments; return this.replace(/{(d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); };
Tím se vrátí čas ve formátu „15:30“