Muhtemel Kopya:
JavaScript kullanarak Zerofilled değeri nasıl oluşturabilirim?
JavaScript'te dolguya ihtiyacım var.
Örneğin, 9 sayısına sahipsem, "0009" olacaktır. Eğer 10 gibi bir sayıya sahipsem, bu "0010" olacaktır. Her zaman nasıl dört basamak içerdiğine dikkat edin.
Bunu yapmanın bir yolu, koymam gereken 0 sayısını elde etmek için sayıyı eksi 4'ten çıkarmak olabilir.
Bunu yapmanın daha kolay bir yolu var mı?
Şimdiye kadar çok fazla "slick" olmadı:
function pad(n, width, z) {
z = z || '0';
n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
Bir diziyi bir sayı ile başlattığınızda, uzunluğu
bu değere ayarlanmış bir dizi oluşturur, böylece dizi o kadar tanımlanmamış
eleman içeriyormuş gibi görünür. Bazı Array örnek yöntemleri değeri olmayan dizi elemanlarını atlasa da, .join()
bunu yapmaz ya da en azından tam olarak yapmaz; bu elemanlara değerleri boş dizeymiş gibi davranır. Böylece, her bir dizi elemanı arasında sıfır karakterinin (ya da "z" her ne ise) bir kopyasını alırsınız; bu yüzden orada bir + 1
vardır.
Örnek kullanım:
pad(10, 4); // 0010
pad(9, 4); // 0009
pad(123, 4); // 0123
pad(10, 4, '-'); // --10
function padToFour(number) {
if (number<=9999) { number = ("000"+number).slice(-4); }
return number;
}
Bunun gibi bir şey mi?
Bonus anlaşılmaz ama daha şık tek satırlık ES6 sürümü:
let padToFour = number => number <= 9999 ? `000${number}`.slice(-4) : number;
ES6izmler:
bir blok ölçekli değişkendir (
var`ın işlevsel kapsamının aksine)=>
, diğer şeylerin yanı sıra function
yerine geçen ve parametrelerinin önüne eklenen bir ok fonksiyonudurnumber =>
)return
ile başlayan tek bir satır varsa, parantezleri ve return
anahtar kelimesini atlayabilir ve sadece şu ifadeyi kullanabilirsinizDene:
String.prototype.lpad = function(padString, length) {
var str = this;
while (str.length < length)
str = padString + str;
return str;
}
Şimdi test et:
var str = "5";
alert(str.lpad("0", 4)); //result "0005"
var str = "10"; // note this is string type
alert(str.lpad("0", 4)); //result "0010"
[DEMO
][1]
ECMAScript 8**'de, aşağıdaki sözdizimine sahip yeni padStart
ve padEnd
yöntemlerine sahibiz.
'string'.padStart(targetLength [,padString]):
Yani şimdi kullanabiliriz
const str = "5";
str.padStart(4, '0'); // '0005'