JavaScript Temelleri

Bölüm 9

String (Karakter Dizgisi) Nesne Sınıfı

Bölüm 9 Sayfa 4

9.2.16 - String (Karakter Dizgisi) Nesne Sınıfı Prototipinin toLowerCase() Metodu

Bu metod, bir kd verisinin karakterlerini küçük harflere çevirir. Eğer kd verisi ilkel kd tipinde değilse ilk önce ilkel kd tipine dönüştürülür. Dönüştürme, karakterlerin teker teker incelenerek dönüştürülmesi ile gerçekleşir. Eğer bir harfin Unicode küçük harf eşdeğeri varsa, bu eşdeğer alınır, yoksa karakter olduğu gibi bırakılır. Sonuç, ilkel kd tipindedir. Kullanımı,

this.toLowerCase()
		

şeklindedir. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var isim= 'TUNAY';

isim.toLowerCase();

sonuçYaz('Sonuç : ', isim, 'b9.2.16-uyg-1-sonuç-1');
...
		

Program Sonucu :

Yukarıdaki uygulamanın sonucunun iyi gitmesi bizleri yanıltmasın. Türk alfabesi, küçük harf/ büyük harf projeksiyonu açısından Unicode projeksiyonu ile uyumsuzdur. Türk alfabesine göre İ nin küçük harf eşleniği, i harfi, I hatfinin küçük harf eşleniği ise, ı harfidir. Oysaki Unicode karakter projeksiyonları I nın küçük harf eşleniğinin i harfi olmasını öngörür. Bu da sorun yaratacak bir konu olarak karşımıza çıkar. Türkçe için yapılacak şey, aşağıda görülen toLocaleLowerCase() metodununun yazılımını değiştirerek uygun bir algoritma ile dönüşümleri gerçekleştirmektir.

9.2.17 - String (Karakter Dizgisi) Nesne Sınıfı Prototipinin toLocaleLowerCase() Metodu

Bu metod, bir kd verisinin karakterlerini küçük harflere çevirir. Eğer kd verisi ilkel kd tipinde değilse ilk önce ilkel kd tipine dönüştürülür. Dönüştürme, karakterlerin teker teker incelenerek dönüştürülmesi ile gerçekleşir. Eğer bir harfin Unicode küçük harf eşdeğeri varsa, bu eşdeğer alınır, yoksa karakter olduğu gibi bırakılır. Sonuç, ilkel kd tipindedir. Bu metodun amacı, Unicode büyük/küçük harf projeksiyonuna uymayan az sayıda dillerin, bu arada özellikle Türkçe karakterlerin, küçük harflare çevrilmesi için özel bir algoritma kullanımına olanak sağlanmasıdır. Kullanımı,

this.toLocaleLowerCase()
		

şeklindedir. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var isim= 'TIĞ İŞİ';

isim.toLocaleLowerCase();

sonuçYaz('Sonuç : ', isim, 'b9.2.17-uyg-1-sonuç-1');
...
		

Program Sonucu :

Yukarıda açıklanan nedenlerden dolayı, Türkçenin İ ve ı karakterlerinin bu metotla doğru çalışacağı düşünülmüyordu, fakat İ karakteri düzgün olarak i haline geliyor, sorun, I/ı eşleniğinde çıkıyor fakat çözümü son derece basit. Bu konuda bir ön taratma yaparak, veriyi I harfinden ve İ harfinden kurtarabiliriz. Bu yöntemle, toLowerCase() metodu yeterli olmaktadır yani, toLocaleLowerCase() metodu için yeni bir algoritmanın yazılması gereksiz olmaktadır. Aşağıda bu yöntemin JavaScript kodlarıve bağlandığı bir uygulama sayfasında verdiği sonuç görülmektedir.

...
function kurtar(kötüRuh) {

var iyiRuh = '';

for (var i = 0; i<kötüRuh.length; i++ ) {
iyiRuh = kötüRuh.replace('I', 'ı');
}

return iyiRuh; // İyi Saatte Olsunlar !!!
}


function YerelKüçükHarflereÇevir2() {

var isim= 'TIĞ İŞİ', sonuç = null;

sonuç = kurtar(isim); 

sonuç = isim.toLowerCase();

sonuçYaz('Sonuç : ', sonuç, 'b9.2.17-uyg-2-sonuç-1');
}

...
		

Sonuçlar, bu yöntemin iyi çalıştığını ve türkçe büyük karakterlerin sorunsuzca küçük karakterlere dönüştürülebildiğini belirtmektedir.

9.2.18 - String (Karakter Dizgisi) Nesne Sınıfı Prototipinin toUpperCase() Metodu

Bu metot, prensip olarak toLowerCase() metodu ile aynıdır. Sadece, burada küçük harfler büyük harflere dönüştürülmektedir. Metotlar içeriğe karşı duyarlı olduklarından, her iki metot prensipte zorunlu olarak simetrik değildir. Yani, kd.toUpperCase().toLowerCase() ifadesi, kd.toLowerCase() ifadesi,ne ifadesine her zaman eşit değildir.

Burda, her zaman olduğu gibi Türkçe karakterler sorun çıkararır. Türkçe karakterlerin bu yönteme nasıl yanıt verdiğinin incelenmesi için, bir uygulama örneğinin JavaScript programı ve ilişikli olduğu, uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var isim= 'ıiüşğöçü';

isim.toUpperCase();

sonuçYaz('Sonuç : ', isim, 'b9.2.18-uyg-1-sonuç-1');
...
		

Program Sonucu :

Yukarıdaki uygulamanın sonuçlarından, her zaman olduğu gibi 'I' ile 'ı' karakterlerinin sorun çıkardığı görülüyor. Bunun için bu şefer farklı bir önlem alma yöntemi üzerinde duracağız. Bunu, bir sonraki metodun incelenmesi sırasında göreceğiz.

9.2.19 - String (Karakter Dizgisi) Nesne Sınıfı Prototipinin toLocaleUpperCase() Metodu

Bu metodun amacı, klasik Unicode dualitesini sağlamayan Türkçe gibi yerel dillere, kendi öz dönüştürme metotlarını düzenleyerek, sorunsuz bir büyük harflere dönüştürme yöntemini yerleştirme olanağının sağlanmasıdır. Biraz önce, Türkçe için sorun çıkaran çiftlerin 'ı'/ 'I' ve 'i'/ 'i' çiftlerinden kaynaklandığını farketmiştik. Bu sorunun kesin çözümü için, aşağıda görülen bir yöntemin JavaScript kodları ve bağlandığı bir uygulama sayfasında verdiği sonuç görülmektedir:

...
String.prototype.toLocaleUpperCase = function() {
var a = this.replace('ı', 'I');
a = a.replace('i', 'İ');
return a;
}

var isim= 'ğüşiçöı',  sonuç = null;

sonuç = isim.toLocaleUpperCase();

sonuçYaz('Sonuç : ', sonuç, 'b9.2.19-uyg-1-sonuç-1');
...
		

Program Sonucu :

Sorun yok. Metot görüldüğü gibi iyi çalışmakta ve Türkçe karakterlerin küçükten büyüğe dönüşümünü sağlamaktadır.

9.3 - String (Karakter Dizgisi) Nesne Sınıfı Örneklerinin Özellikleri

9.3.1 - String (Karakter Dizgisi) Nesne Örneklerinin length Özelliği

Karakter dizgisi nesne sınıfının örneklerinin aynı dizi sınıfı örnekleri gibi length özelliği vardır. Kd sınıfı nesne örneklerinin length özelliğinin değeri, nesne örneğinin içerdiği karakter sayısıdır. Kd sınıfı prototipinin uzunluğunun değeri 0 olacaktır, çünkü kd sınıfının prototipi boş bir kd nesne sınıfı örneğidir. Aşağıda JavaScript kodları görülen bir program bu konuyu açıklamaktadır. Bu programın bağlandığı bir uygulama sayfasında verdiği sonuç aşağıda görülmektedir:

...


sonuçYaz('String.prototype.length = ', String.prototype.length, 'b9.3.1-uyg-1-sonuç-1');

...
		

Program Sonucu :

9.4 - String () Fonksiyonu

String() fonksiyonu, verilerin ilkel string veri tipine dönüştürülmesi için en çok akla gelen bir dönüştürme yöntemidir. Kullanımı,

String([değer])
		

şeklindedir. Eğer bir değer verilmezse, boş bir karakter dizigisi geri döndürülür. Bu konuda bir JavaScript programı ve ilişkilendirilmiş olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var b = 26;
veriTipiYaz(String(b), 'b9.4-uyg-1-sonuç-1'); 
...
		

Program Sonucu :

Valid XHTML 1.1