Dinamik olarak bir metin oluştururken bu metnin bazı verileri değişkenlerden gelebilir. İşte bu değişkenlerden gelen verileri metin içinde nasıl birleştireceğimiz string.format konusuna girer.
Anlatmak istediğim konuyu bir örnek üzerinden açıklamam gerekirse.
Örneğin C# programlama dilinde
var mesaj= String.Format("Toplam {0} kayıt bulundu",10);
Bu yazının çıktısı "Toplam 10 kayıt bulundu" olacaktır.
Bu makalamde yukarıdaki işlemi javascript programlama dilinde yapmaya çalışacağım.
Bunun için aşağıdakı metotu yazdım. Bu metot basitçe metin içerisinde yer alan süslü parantezlere göre verileri yerleştirme mantığına dayanmaktadır. Tüm C Style programlama dillerinde string format metodu süslü parantezlere göre ayrıştırılır.
Bunun için aşağıdaki stringFormat metodu yazılmıştır.
var stringFormat = function () {
var s = arguments[0];
for (var i = 0; i < arguments.length - 1; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[i + 1]);
}
return s;
}
Bu metodun kullanımı aşağıdaki gibi olmalıdır.
var mesaj= stringFormat("Toplam {0} kayıt bulundu",10);
Bu metotla ilgili vurgulamam gereken nokta var ki extradan kontroller olmadığı için metin içerisindeki tüm süslü parantezleri algılar. Eğer süslü parantezleri doğru şekilde kapatıp açmazsanız hata alırsınız. Kendi kodunuz için bu durumu göz önünde bulundurarak kullanmanızı tavsiye ederim.
Son olarak konuyu özetleyecek olursam birçok programlama dilinin içinde bu yapı zaten mevcut olsa da JavaScript içinde bu yapı hazır olmadığı bunun için alternatif metotlar yazılmıştır. Ben de bu fonksiyonları ve daha önce yazılmış fonksiyonları inceleyerek bunlardan en iyi olanı seçtim ve konuyu derleyerek bir makale yazmak istedim.
Umarım makalem faydalı olmuştur. Konuyla alakalı sorularınız olursa yazabilirsiniz.. En kısa sürede yanıtlamaya çalışacağım...
Bunun için aşağıdaki stringFormat metodu yazılmıştır.
var stringFormat = function () {
var s = arguments[0];
for (var i = 0; i < arguments.length - 1; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[i + 1]);
}
return s;
}
Bu metodun kullanımı aşağıdaki gibi olmalıdır.
var mesaj= stringFormat("Toplam {0} kayıt bulundu",10);
Bu metotla ilgili vurgulamam gereken nokta var ki extradan kontroller olmadığı için metin içerisindeki tüm süslü parantezleri algılar. Eğer süslü parantezleri doğru şekilde kapatıp açmazsanız hata alırsınız. Kendi kodunuz için bu durumu göz önünde bulundurarak kullanmanızı tavsiye ederim.
Son olarak konuyu özetleyecek olursam birçok programlama dilinin içinde bu yapı zaten mevcut olsa da JavaScript içinde bu yapı hazır olmadığı bunun için alternatif metotlar yazılmıştır. Ben de bu fonksiyonları ve daha önce yazılmış fonksiyonları inceleyerek bunlardan en iyi olanı seçtim ve konuyu derleyerek bir makale yazmak istedim.
Umarım makalem faydalı olmuştur. Konuyla alakalı sorularınız olursa yazabilirsiniz.. En kısa sürede yanıtlamaya çalışacağım...
Yorumlar
Yorum Gönder