C#
Substring
Substring ile bir metnin parçasını almayı öğrenirsin.
Substring ile alt dize
C#'ta bir dizenin bir kısmını almak için Substring metodu kullanılır. Tek parametreli Substring(int startIndex) biçimi, verilen başlangıç konumundan dizenin sonuna kadar olan kısmı döndürür. Konumlar sıfırdan başlar; yani ilk karakterin konumu 0'dır.
Örneğin "Merhaba".Substring(3) çağrısı "haba" döndürür çünkü sıfırıncı karakter M, üçüncü karakter h'dir. Özgün dize değişmez; sonuç yeni bir dizedir ve bir değişkene atamalısın.
Uzunluk parametresi
İki parametreli Substring(int startIndex, int length) biçimi, başlangıç konumundan itibaren belirli sayıda karakter alır. Sabit uzunluklu bir kod parçasını dizeden ayıklamak istediğinde işine yarar.
Örnek: "20240115".Substring(0, 4) çağrısı "2024" döndürür; ilk dört karakteri alır. Başlangıç artı uzunluk dizenin boyunu aşarsa ArgumentOutOfRangeException fırlatılır, bu yüzden sınırı kontrol etmek gerekir.
Özgün dize değişmez
Dizeler C#'ta değiştirilemez (immutable) olduğundan Substring çağrısı özgün dizeyi bozmaz; yeni bir dize döndürür. Sonucu kullanmak için onu bir değişkene atamalısın.
Örneğin string part = name.Substring(2); yazdığında name aynı kalır, part yeni dizeyi tutar. Aynı davranış Split, Replace ve Trim gibi diğer dize metotları için de geçerlidir.
Uygulama Alan adını çıkar
email değişkenindeki '@' işaretinin konumunu IndexOf ile atIndex değişkenine al (kodda hazır). Sonra Substring ile atIndex + 1 konumundan dizenin sonuna kadar olan kısmı domain değişkenine ata. Son olarak Console.WriteLine ile domain'i yazdır.
Örnek çözümü göster
Önce atIndex'i bul (kodda hazır), sonra email.Substring(atIndex + 1) ile domain'i al ve Console.WriteLine ile yazdır.
Örnek çözüm:
using System;
class Program
{
static void Main()
{
string email = "ayse@codeblanks.com";
int atIndex = email.IndexOf('@');
string domain = email.Substring(atIndex + 1);
Console.WriteLine(domain);
}
}
Kendini test et
-
"Merhaba".Substring(3) çağrısı ne döndürür?
Console.WriteLine("Merhaba".Substring(3));
Cevabı göster
haba — Doğru! 3. konum 'h' harfidir ve dizenin sonuna kadar 'haba' alınır.
-
İlk dört karakteri al
string code = "2024AB78";
string year = code____;
Console.WriteLine(year);
Cevabı göster
string code = "2024AB78";
string year = code.Substring(0, 4);
Console.WriteLine(year);
-
Sınır aşımı durumunda ne olur?
string s = "abc";
string part = s.Substring(5);
- Boş dize döner
- FormatException fırlatır
- ArgumentOutOfRangeException fırlatır
- null döner
Cevabı göster
ArgumentOutOfRangeException fırlatır — Doğru! Başlangıç dize uzunluğunu aşınca ArgumentOutOfRangeException fırlar.
Sıradaki ders: IndexOf ve LastIndexOf