IndexOf ve LastIndexOf
IndexOf ve LastIndexOf ile arama yapmayı öğrenirsin.
IndexOf ile arama
IndexOf metodu bir alt dizenin dizede ilk geçtiği konumu verir. Bulamazsa -1 döndürür. Bu dönüş değeri, aramanın başarılı olup olmadığını if ile kontrol etmeni sağlar.
Örneğin "ayse@codeblanks".IndexOf('@') çağrısı 4 döndürür çünkü '@' işareti sıfırıncı konumdan sayıldığında dördüncü sıradadır. Büyük-küçük harf duyarlıdır; bu yüzden IndexOf('A') ile IndexOf('a') farklı sonuç verebilir.
LastIndexOf ile son konum
LastIndexOf metodu, bir alt dizenin dizede son geçtiği konumu verir. Dosya yollarında son klasör adını, URL'lerde son '/' işaretini bulmak için idealdir. Bulunamazsa yine -1 döner.
Örnek: "a/b/c.txt".LastIndexOf('/') çağrısı 3 döndürür. Böylece Substring(lastSlash + 1) ile yalnızca dosya adını alabilirsin. Bu, dosya işlemlerinde çok kullanışlı bir kalıptır.
Başlangıç konumu vermek
IndexOf ve LastIndexOf ikinci bir parametre olarak bir başlangıç konumu alabilir. IndexOf('a', 5) çağrısı, aramaya beşinci konumdan başlar; önceki eşleşmeleri atlar. Bu, bir dizede birden çok örneği sırayla bulmak için kullanılır.
Örneğin bir metindeki tüm boşlukları dolaşmak istersen, her seferinde bir önceki konumun bir fazlasından başlatırsın. Böylece döngü içinde aramayı ilerletebilirsin. Bulunamayınca döngü -1 ile sonlanır.
Uygulama Dosya adını bul
path değişkenindeki son '/' işaretinin konumunu LastIndexOf ile lastSlash değişkenine al. Sonra Substring(lastSlash + 1) çağrısıyla dosya adını fileName değişkenine ata ve Console.WriteLine ile yazdır.
Örnek çözümü göster
lastSlash = path.LastIndexOf('/'); ile konumu al, sonra fileName = path.Substring(lastSlash + 1); ile dosya adını çıkar ve yazdır.
Örnek çözüm:
using System;
class Program
{
static void Main()
{
string path = "docs/raporlar/2024.pdf";
int lastSlash = path.LastIndexOf('/');
string fileName = path.Substring(lastSlash + 1);
Console.WriteLine(fileName);
}
}
Kendini test et
-
Alt dize bulunamazsa IndexOf ne döndürür?
int i = "merhaba".IndexOf('z');- 0
- -1
- null
- FormatException fırlatır
Cevabı göster
-1 — Doğru! IndexOf bulunamayınca -1 döndürür; null değil, int beklenir.
-
Son eğik çizginin konumu
string path = "a/b/c.txt"; int lastSlash = path____; Console.WriteLine(lastSlash);Cevabı göster
string path = "a/b/c.txt"; int lastSlash = path.LastIndexOf('/'); Console.WriteLine(lastSlash); -
Çağrıyı sonucuyla eşleştir
- "merhaba".IndexOf('a')
- 2
- "merhaba".LastIndexOf('a')
- 5
- "merhaba".IndexOf('z')
- -1