C# String İşlemleri
- 5168
- (1)
- (5)
- 09 Haz 2017
Hemen hemen her programda metin bazlı işlemler önem arzetmektedir. C# .NET kütüphanesinde string
veri türüne ait çeşitli işlevsel metotlar bulunmaktadır.
String Birleştirme
Metinleri birleştirmek için çeşitli yöntemlerden birini kullanabilirsiniz.
İki veya daha fazla metni +
operatörü ile birleştirebilirsiniz.
string firstName = "Sami", middleName = "Erhan", lastName = "Yılmaz";
string fullName = firstName + " " + middleName + " " + lastName; // Sonuç "Sami Yusuf Yılmaz"
String.Join
metodu ile tek bir birleştirme ayracı ile birleştirebilirsiniz. Bu metodun ilk parametresi birleşen metinlerin arasına gelecek olan ayraç metnidir. Kalan sınırsız sayıda parametreler birleşecek metinlerdir. Bu parametreler tek bir dizi yani string[]
olarak da kullanabilirsiniz.
string firstName = "Sami", middleName = "Erhan", lastName = "Yılmaz";
string fullName = String.Join(" ", firstName, middleName, lastName); // Sonuç "Sami Yusuf Yılmaz"
string sepNames = String.Join("-", firstName, middleName, lastName); // Sonuç "Sami-Yusuf-Yılmaz"
String.Format
metodu ile diğer metinleri tek bir metnin içerisine yerleştirebilirsiniz.
string firstName = "Sami", middleName = "Erhan", lastName = "Yılmaz";
string fullName = String.Format("{0} {1} {2}", firstName, middleName, lastName);
C# 6.0 sürümü ile $
operatörünü string
değişkenleri içerisine yerleştirme yapmak için kullanabilmektesiniz.
string firstName = "Sami", middleName = "Erhan", lastName = "Yılmaz";
string fullName = $"{firstName} {middleName} {lastName}";
String formatları
String.Format
metodu ile metnin içerisine int
, short
, double
gibi diğer değişken türlerini de çeşitli formatlarda yazabilmektesiniz.
int a = 15, b = 3;
string result = String.Format("{0} ve {1}", a, b); // Sonuç "15 ve 3"
string result = String.Format("{0:D4} ve {1:D6}", a, b); // Sonuç "0015 ve 000003"
string result = String.Format("{0:N2} ve {1:N3}", a, b); // Sonuç "15,00 ve 3,000"
Yukarıdaki int
değişkenlerini string
değişken türüne formatlı bir biçimde dönüştürebilirsiniz.
int a = 15, b = 3;
string result = String.Format("{0} ve {1}", a, b); // Sonuç "15 ve 3"
string result = String.Format("{0} ve {1}", a.ToString("D4"), b.ToString("D6")); // Sonuç "0015 ve 000003"
string result = String.Format("{0} ve {1}", a.ToString("N2"), b.ToString("N3")); // Sonuç "15,00 ve 3,000"
Ondalık sayılar için çeşitli format türleri mevcuttur.
double a = 3.1415, b = 0.14;
string result = String.Format("{0:E}", a); // Sonuç "3.141500E+000"
string result = String.Format("{0}", a.ToString("E")); // Sonuç "3.141500E+000"
string result2 = String.Format("{0:P2}", b); // Sonuç "%14,00"
Metni Başından veya Sonundan Kırpma
String.Substring
metodu ile metinleri istediğiniz gibi kırpabilirsiniz.
string metin;
metin = "Bu metin kırpılarak değiştirilecek";
Console.WriteLine(metin.Substring(5)); // İlk beş karakterden sonrası tamamen alınır: "tin kırpılarak değiştirilecek"
Console.WriteLine(metin.Substring(5, 10)); // İlk beş karakterden sonraki on karakter alınır: "tin kırpıl"
Console.WriteLine(metin.Substring(metin.Length - 5, 5)); // Son beş karakter alınır: "lecek"
string
veri türünün Length
özelliği metnin karakter uzunluğunu int
olarak veren bir özelliktir.
Metnin Karakterleri
string
türündeki bir metin değişkeninin her bir karakteri char
türündedir. C# dilinde []
parantezleriyle kullanılan indis operatörüyle bu karakterler kullanılabilir.
string metin;
metin = "Bu metin kırpılarak değiştirilecek";
Console.WriteLine(metin[0]); // Metnin 0 indisli yani ilk karakteri 'B' yazılır
Console.WriteLine(metin[7]); // Metnin 7 indisli yani sekizinci karakteri 'n' yazılır
char ch10 = metin[10]; // Metnin 10 indisli karakteri ch10 diye bir değişkene atanır
Console.WriteLine(ch10); // ch10 değişkeni yazılır. 'ı'
Metnin indis numarasına göre karakterleri de okunabilmektedir. IndexOf
metodu ile bu metoda yazılan int
türündeki parametre ile karakter okunur. Metodun geri dönüş türü char
değişken türüdür.
string metin;
metin = "Bu metin kırpılarak değiştirilecek";
Console.WriteLine(metin.IndexOf('m')); // İlk 'm' karakteri 3 olarak yazılır
Console.WriteLine(metin.IndexOf('a')); // İlk 'a' karakteri 15 olarak yazılır
Console.WriteLine(metin.IndexOf(' ')); // İlk ' ' (boşluk) karakteri 2 olarak yazılır
Console.WriteLine(metin.IndexOf('z')); // İlk 'z' karakteri metnin içinde bulunmadığı için -1 olarak yazılır
LastIndexOf
metodu ise sondan başlayarak bir karakterin indisini vermektedir.
string metin;
metin = "Bu metin kırpılarak değiştirilecek";
Console.WriteLine(metin.LastIndexOf('e'));
Console.WriteLine(metin.IndexOf('e'));
Kaçış Sekansları (Özel Karakterler)
Metin içerisinde tab boşluğu, yeni satır, tırnak gibi karakterleri belirtmek için kullanılan ifadelere kaçış sekansları denmektedir. Örneğin metin içerisinde yeni satır belirtmek için aşağıdaki gibi bir kod kullanılır.
Console.WriteLine("Satır 1\nSatır 2");
// Satır 1 den sonra
// Satır 2 yeni satıra yazılacaktır
Console.WriteLine("Metin 1\tMetin 2");
// Metin 1 den sonra tab boşluğu ve Metin 2 yazılacaktır
// "Metin 1 Metin 2"
\'
- Tek tırnak\"
- Çift tırnak\\
- \ işaretinin kendisi\n
- Yeni satır\t
- Tab boşluğu\b
- Backspace\v
- Düşey boşluk\uxxxx
- 16 tabanlı xxxx unicode karakteri
Karakter Büyütme ve Küçültme
Bir metnin bütün karakterlerini büyütmek veya küçültmek isteyebilirsiniz. Büyütmek içinToUpper
metodu kullanılır. Küçültmek için ToLower
metodu kullanılır.
string isim = "Ali";
Console.WriteLine(isim); // Ekrana Ali yazılacaktır
Console.WriteLine(isim.ToUpper()); // Ekrana ALİ yazılacaktır
Console.WriteLine(isim.ToLower()); // Ekrana ali yazılacaktır
// Eğer bilgisayarınız ingilizce ise büyütme işleminde ekrana ALI yazılacaktır.
// Ya da programınızı derledikten sonra ingilizce bir bilgisayarda aynısı olur.
// Bunun önüne geçmek için
Console.WriteLine(isim.ToUpper(System.Globalization.CultureInfo.GetCultureInfo("tr-TR")));
// CultureInfo ile istediğiniz kültüre ait harf kuralı uygulanabilir.
// Aynı işlem ToLower için de kullanılabilir.
System.Globalization.CultureInfo
nesnesi ile tarih ve zaman değerlerini metne dönüştürürken de belli bir kültürün diline uygun kurallar çerçevesinde yapılabilir.
Aynı şekilde ondalık sayıları metne dönüştürürken veya metinden okurken .
veya ,
farkından oluşacak hataları elimine edilebilir. Çünkü kültüre göre ve uygulamanın çalıştırıldığı bilgisayarın diline göre değişiklik arz etmektedir.
Metin İçerisinde Belli Bir Bölüm Değiştirme
Replace
metodu ile string
bir değer içerisinde değişiklik yapabilirsiniz.
string cumle = "Pazardan bir kilo elma aldı.";
Console.WriteLine(cumle); // cumle değeri olduğu gibi ekrana yazılacaktır
Console.WriteLine(cumle.Replace("elma", "domates"));
// Ekrana "Pazardan bir kilo domates aldı." yazılacaktır
Dikkat edilmesi gereken husus, Replace
metodu uygulandığı string
değişkenini değiştirmez. Değiştirilmiş halini yeni bir string
türü değer olarak geri döndürür.
string cumle = "Pazardan bir kilo elma aldı.";
cumle.Replace("Pazardan", "Marketten");
Console.WriteLine(cumle); // cumle değeri orijinal hali ile ekrana yazılacaktır
// Değişikliği muhafaza etmek için
string cumle2 = cumle.Replace("Pazardan", "Marketten");
Console.WriteLine(cumle2); // yeni değer ekrana yazılacaktır.
// Değişikliği başka bir değişkene atamak istemiyorsanız
cumle = cumle.Replace("Pazardan", "Marketten");
// şeklinde değişkeni olduğu gibi değiştirebilirsiniz.
String Dizisi Birleştirme
Bir string
dizisi birleştirmek için String.Join
metodu kullanılabilir. Metodun iki adet parametresi vardır. İlki birleştirilecek dizi elemanlarının arasına konulacak olan seperatördür. İkincisi ise birleştirilecek dizidir.
string[] dizi = new string[]
{ "Kalem", "Kitap", "Defter", "Silgi" };
Console.WriteLine(String.Join(", ", dizi));
// Ekrana "Kalem, Kitap, Defter, Silgi" yazılır
Console.WriteLine(String.Join(".", dizi));
// Ekrana "Kalem.Kitap.Defter.Silgi" yazılır
Console.ReadKey();