19 Nisan 2013 Cuma

C# IndexOf() Metodu

Terimin anlamını okuyarak metodun ne iş yaptığını anlamak bence biraz mantıksız. yani okuyorsun tamam anladım diyorsun ama uygulama da çakılıp kalıyorsun. Yine de bu metodun anlamı, belirtilen bir karakter ya da stringin başka bir string içinde bulunup bulunmadığına bakılması, eğer bulunursa hangi konumda olduğu bilgisinin elde edilmesidir. Örnek yapalım:

string cumle = "http://www.aaksoy.com";

int baslangic_pozisyon = cumle.IndexOf(".") + 1;  

Label1.Text = cumle.Substring(baslangic_pozisyon, cumle.Length - baslangic_pozisyon); 


cumle stringi içerisindeki metnin belirli bir yerinden itibaren almak istiyoruz. Öncelikle hangi pozisyondan alacağımızı belirlememiz gerekir. Yani metnin neresinden itibaren alacağımızı belirlemeliyiz. Bunun için IndexOf() metodunu kullandık;

int baslangic_pozisyon = cumle.IndexOf(".") + 1;  


Yukarıdaki kodda yaptığımız şu:
1 - Nokta(.) işaretini metnin başından itibaren arayarak bul.
2 - Başlangıç noktası olarak bulunan nokta(.) işaretinin bir sonraki karakterini +1 ile al. (yani a harfi)
3 - baslangic_pozisyon değişkenini sayfaya yazdırmak istersek "11" sonucunu alırız, yani a harfini...
4 - Ayrıca metni index numarası şeklinde sayarız, yani ilk karakter birinci değil sıfırıncıdır. (IndexOf için)

cumle.Length

Bu kod bize string içerisinde saklanan metnin uzunluğunu verir. Bunu sayfaya yazdırmak istersek "21" sonucunu alırız. Length ile sayım işlemi yaparken ilk karakteri IndexOf metodundaki gibi sıfır diyerek değil bir diyerek saymaya başlarız.

Son olarak Substring metodu ile metnin, belirtilen bir kısmını alabiliriz.

Label1.Text = cumle.Substring(baslangic_pozisyon, cumle.Length - baslangic_pozisyon);

Substring şe şekilde çalışır ;

işlem_yapilacak_metin.Substring(Başlangıç pozisyonu, uzunluk);

Başlangıç pozisyonunu zaten IndexOf metodu ile bulmuştuk, uzunluk parametresini ise metnin tamamının uzunluğundan başlangıç uzunluğunu çıkararak buluruz. Açalım biraz :)

Başlangıç Pozisyonu : 11
Metnin tamamının Uzunluğu: 21;

O halde almak istediğimiz aralık 21 - 11 = 10 luk bir kısım...

 Koddaki cumle.Length - baslangic_pozisyon buradan geliyor ve sonu olarak bize aaksoy.com değerini veriyor.

1 yorum: