JavaScript Temelleri

Bölüm 9

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

Bölüm 9 Sayfa 3

9.2.11 - String (Karakter Dizgisi) Nesne Sınıfı Prototipinin replace() Metodu

Bu metod, bir kd nesne örneğinde, belirli alt kd verisinin içinde bulunan bir aranan kd verisinin başka bir kd verisi ile değiştirilmesini sağlar. Bu metodun kullanım şekli aşağıda görülmektedir :

this.prototype.replace(aranankd, yenikd);
		

Bu metodun uygulanmasında, ilk önce this değeri, ilkel kd veri tipine dönüştürülür ve kd verisi olarak tanımlanır.

Bu metodun uygulama alanı çok geniştir. En basit uygulama türleri, gerek aranan gerek değiştirilecek kd değerlerinin basit kd değerleri olduğu durumlardır.

Eğer aranan kd, kd verisi içinde bulunmazsa geriye kd verisi döndürülür. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...

var kd ='javascript',  arananKd = 'x',  değişecekKd = 'script',  sonuç = null;

sonuç= kd.replace(arananKd, değişecekKd);

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

...
		

Program Sonucu :

Eğer arananan kd, kd verisi içinde bulunursa, ilk uyuşma sonucu, belirtilen kd ile değiştirilir. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...

var kd ='javascript',  arananKd = 'javascript',  değişecekKd = 'JavaScript',  sonuç = null;

sonuç= kd.replace(arananKd, değişecekKd);

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

...
		

Program Sonucu :

İncelenen kd verisindeki tüm uyuşmaların yerine, verilen kd nin yerleştirilmesi istenirse, uygulanabilecek en etkili yöntem, düzenli deyimlerin kullanılmasıdır. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...

var kd ='Sayın Yeşil Yaprak Sitesi sakinlerine, Yeşil Yaprak sitesi ...',
arananKd = new RegExp('yeşil yaprak', 'gi'), değişecekKd = 'Kozaltı', sonuç = null;

sonuç= kd.replace(arananKd, değişecekKd);

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

...
		

Program Sonucu :

Aranacak kd değerinin karmaşık bir düzenli deyim olması durumunda, elde edilecek sonuçların öngörülmesi giderek güçleşecektir. Bu durumda, sonuçların iyice denendikten sonra kullanılması sağlık verilir.

Yerleştirilecek değer, bir fonksiyon da olabilir. Bu durumda, fonksiyonu, ilk argüman olarak, uyuşan alt kd parçası ile çağrılacaktır. Bu tür uygulamalara, normal olarak pratikte rastlanmaz.

Bu metodun amacı, bir kd verisinde aranan düzenli deyim ifadesinin uyuştuğu karakterin yerinin belirlenmesidir. Kullanımı,

this.prototype.search(düzenli deyim);
		

şeklindedir. Eğer argüman düzenli deyim tipinde değilse, düzenli deyim nesne sınıfı yapılandırıcısı çağrılarak, ifade, düzenli deyim sınıf örneğine (düzenli deyim ifadesine) dönüştürülecektir. Geri döndürülen değer, uyuşma olursa, ilk uyuşma sağlanan karakterinin indis değeri, uyuşma olmazsa, -1 değeridir. Bu metod, global arama anahtarını ve düzenli deyim sınıfı nesne örneğinin LastIndex özelliğini gözardı eder. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...

var kd ='Sayın Yeşil Yaprak Sitesi sakinlerine, Yeşil Yaprak sitesi ...',
arananKd = new RegExp('yeşil yaprak', 'gi'), sonuç = null;

sonuç= kd.search(arananKd);

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

...
		

Program Sonucu :

Yukarıdaki uygulama sonuçlarından da görüldüğü gibi, search () metodu, sadece ilk uyuşmanın olduğu karakterin koordinatını döndürmekte ve global arama anahtarının sonuçlarını gözardı etmektedir. Yani aramayı global arama anahtarı kapalı imiş gibi yapmaktadır.

9.2.13 - String (Karakter Dizgisi) Nesne Sınıfı Prototipinin slice() Metodu

İncelenecek olan slice() metodu iki argüman alır. Bunlardan biri, başlangıç, diğeri de son değerleridir. Metodun kullanımı,

this.prototype.slice( başlangıç, son);
		

şeklindedir. Bu metot, this kd nesne örneğini, ilkel kd değerine dönüştürür ve başlangıç değerinden başlayan ve son ile biten (son hariç) alaığındaki karakterleri içeren bir alt ilkel kd verisini döndürür. Eğer son argümanının değeri undefined ise, başlangıç değerinden başlayarak, kd verisinin sonuna kadar karakterleri kapsayan bir alt ilkel kd değeri geri döndürülür.

Bu metodun başlangıç ve son argümanları pozitif skaler tamsayı değerleri ise, geri dönecek alt ilkel kd verisinin kestirilmesi çok kolay olacaktır. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...

var kd ='Sayın Yeşil Yaprak Sitesi sakinlerine, Yeşil Yaprak sitesi ...',
başlangıç = 6, son = 18, sonuç = null;

sonuç= kd.slice(başlangıç, son);

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

...
		

Program Sonucu :

Bu metodun argümanlarının değerleri negatif de olabilir. Bu durumda aşağıdaki formülasyon uygulanabilir:

n = kd verisinin karakter sayısı olmak üzere,

eğer başlangıç negatif ise, max(n + başlangıç, 0) değeri aksi halde min(başlangıç, n) değeri kullanılır.

eğer son negatif ise, max(n + son,0) değeri aksi halde min(son, n) değeri kullanılır.

9.2.14 - String (Karakter Dizgisi) Nesne Sınıfı Prototipinin split() Metodu

Bu metodun amacı, verilen bir kd verisinin alt kd lere ayrılmasıdır. Kullanımı,

this.prototype.split(ayraç, sınır);
		

Burada ayraç, bir kd parçası olabileceği gibi, bir düzenli deyim de olabilir. Eğer ayracın değeri belirsiz ise, metod geriye sadece kd verisine dönüştürülmüş olan this değerini içeren bir dizi döndürür. sınır değeri ise, metodun geri döndürdüğü dizinin uzunluğunu belirtir. Sınır değeri belirsiz ise, ayırma this değerinin sonuna kadar devam eder. Sınır değeri 0 ise, geriye boş dizi döndürülür.

Bu metot geriye bir dizi döndürür. Dizi elemanları ayracın this değerinde uyuştuğu alt kd parçacıklarının ayırdığı kd ceğerleridir. En basit bir uygulama için bir örnek JavaScript programı aşağıda verilmiştir. Bu programın ilişikli olduğu, bir uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...

var kd ='Sayın Yeşil Yaprak Sitesi sakinlerine, Yeşil Yaprak sitesi ...',
ayraç = 'Yeşil', sınır = 3, sonuç = null;

sonuç= kd.split(ayraç, sınır);

sonuçYaz('Sonuç : ', sonuç.join('@'), 'b9.2.14-uyg-1-sonuç-1');

...
		

Program Sonucu :

Bu uygulama sonucundan görüldüğü gibi, kd verisi önve ilkel kd tipine dönüştürülmekte, ve ayraç aranmaktadır. Aranan ayraç olan 'Yeşil' kd parçası iki yerde bulunmakat bu şekilde kd verisi üç alt kd verisine parçalanabilmektedir. Geri döndürülecek dizide üç eleman olması öngörüldüğünden, her üç parça da geri döndürülen diziye aktarılmaktadır.

Aynı işlev, düzenli deyimlerin kullanılması ile de sağlanabilir. Bu durumda, global arama anahtarı gözardı edilir. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...

var kd ='Sayın Yeşil Yaprak Sitesi sakinlerine, Yeşil Yaprak sitesi ...',
ayraç = /yeşil/i, sınır = 3, sonuç = null;

sonuç= kd.split(ayraç, sınır);

sonuçYaz('Sonuç : ', sonuç.join('@'), 'b9.2.14-uyg-2-sonuç-1');

...
		

Program Sonucu :

İlgiç bir uygulama, ayracın bir boş kd yi kapsadığı durumlarda gerçekleşir. Bu durumda, geri dönen dizi, sınırlamanın elverdiği kadarı ile, kd verisinin tüm karakterlerini içerebilir. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...

var kd ='Ders programı,
ayraç = /y*/i, sonuç = null;

sonuç= kd.split(ayraç);

sonuçYaz('Sonuç : ', sonuç.join('|'), 'b9.2.14-uyg-3-sonuç-1');

...
		

Program Sonucu :

Yukarıdaki uygulama klasik bir uygulamadır. Bu yöntemle, tüm kd karakterleri bir dizi elemanlarına yerleştirilebilir ve istendiği şekilde manipüle edilebilir.

Eğer this verisi, boş kir kd ise sonuç, ayracın boş bir kd ile uyuşup uyuşmadığına bağlıdır. Eğer uyuşma sağlanıyorsa, döndüürülen dizide hiç eleman bulunmaz. Eğer uyuşma sağlanamıyorsa, geri dönen dizi, sadece boş bir kd olan bir tek eleman içerecektir.

9.2.15 - String (Karakter Dizgisi) Nesne Sınıfı Prototipinin substring() Metodu

Bu metodun amacı bir kd verisinin belirli bir diliminden yeni bir kd verisi yaratmaktır. Bu yeni kd verisine, alt kd (substring) adı verilir. Kullanımı,

this.substring(başlangıç, son);
		

şeklindedir. Burada, başlangıç, alt kd'nin başladığı karakter konumu, son ise alt kd nin tamamlandığı karakterden bir sonraki karakterin konumudur. Eğer son değeri belirsiz ise, kd verisinin en sonundaki karakterin konumuna kadar devam edilir. Eğer her iki değer de NaN veya negatif ise, yerlerine sıfır konulur. Eğer, heri iki argümandan birisi kd uzunluğundan büyükse, yerine kd uzunluğu yerleştirilir. Eğer başlangıç, sondan büyükse, her ikisi yer değiştirir.

Görüldüğü gibi, bu metot bir sonuç vermesi için fazla zorlanmıştır. Genelde bir sonuç verir fakat, bu sonucun istenilen sonuç olup olmadığı, iyice denenerek kararlaştırılmalıdır. En doğrusu, bu metodu bilinçle, normal sınırlar içinde ve sonucunun öngörülmesi kolay olacak şekilde uygulanması sağlık verilir. Bu metot geriye bir kd nesne sınıfı örneği değil, ilkel kd (string) tipinde bir veri döndürür.

Bu konuda basit bir uygulama için örnek bir JavaScript programı ve ilişikli olduğu, uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...

function substring() {

var kd ='Damlataş Mağarası',
başlangıç = 8, son = 15, sonuç = null;

sonuç= kd.substring(başlangıç, son);

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

...
		

Program Sonucu :

Valid XHTML 1.1