

C# Programlama Dilinde String İşlemleri ve StringBuilder Kullanımı
C# programlama dilinde, metinlerle çalışmak oldukça yaygın bir ihtiyaçtır. Bu ihtiyacı karşılamak için C#, zengin string işleme yetenekleri sunar. Bu makalede, C# dilinde stringlerle nasıl çalışılacağını ve performans açısından kritik olan StringBuilder
sınıfının nasıl kullanılacağını detaylı bir şekilde inceleyeceğiz.
String Veri Tipi
C# dilinde string
veri tipi, metinsel verileri temsil etmek için kullanılır. string
aslında bir System.String
sınıfının bir takma adıdır. Stringler, Unicode karakter dizileridir ve değiştirilemez (immutable) yapıdadırlar. Bu, bir string oluşturulduktan sonra içeriğinin değiştirilemeyeceği anlamına gelir. String üzerinde yapılan her değişiklik, aslında yeni bir string nesnesi oluşturur.
String Tanımlama ve Başlatma:
String tanımlamak ve başlatmak oldukça basittir:
string message = "Merhaba, Dünya!";
string name = "Ahmet";
string emptyString = string.Empty; // Boş bir string
Temel String İşlemleri
C#, stringlerle çalışmak için birçok yerleşik metot sunar. İşte en sık kullanılanlardan bazıları:
String Birleştirme (Concatenation)
Stringleri birleştirmenin birkaç yolu vardır:
+
operatörü ile birleştirmestring.Concat()
metodu ile birleştirmestring.Format()
metodu ile biçimlendirme
Örnekler:
string firstName = "Ayşe";
string lastName = "Yılmaz";
// + operatörü ile birleştirme
string fullName = firstName + " " + lastName; // Ayşe Yılmaz
// string.Concat() ile birleştirme
string fullName2 = string.Concat(firstName, " ", lastName); // Ayşe Yılmaz
// string.Format() ile biçimlendirme
string fullName3 = string.Format("{0} {1}", firstName, lastName); // Ayşe Yılmaz
Console.WriteLine(fullName);
Console.WriteLine(fullName2);
Console.WriteLine(fullName3);
String Uzunluğunu Bulma
Bir stringin uzunluğunu (karakter sayısını) bulmak için Length
özelliğini kullanırız.
string text = "C# Programlama";
int length = text.Length; // 14
Console.WriteLine("Metnin uzunluğu: " + length);
String İçinde Arama Yapma
Bir stringin içinde belirli bir alt stringin olup olmadığını kontrol etmek veya konumunu bulmak için aşağıdaki metotlar kullanılabilir:
Contains()
: Belirli bir alt stringin içerilip içerilmediğini kontrol eder.IndexOf()
: Belirli bir alt stringin ilk görüldüğü indeksi döndürür. Bulunamazsa -1 döndürür.LastIndexOf()
: Belirli bir alt stringin son görüldüğü indeksi döndürür. Bulunamazsa -1 döndürür.StartsWith()
: Stringin belirli bir alt string ile başlayıp başlamadığını kontrol eder.EndsWith()
: Stringin belirli bir alt string ile bitip bitmediğini kontrol eder.
Örnekler:
string sentence = "C# programlama dili çok güçlüdür.";
bool containsCSharp = sentence.Contains("C#"); // true
int indexOfDili = sentence.IndexOf("dili"); // 15
int lastIndexOfA = sentence.LastIndexOf("a"); // 28
bool startsWithCSharp = sentence.StartsWith("C#"); // true
bool endsWithNokta = sentence.EndsWith("."); // true
Console.WriteLine("C# içeriyor mu: " + containsCSharp);
Console.WriteLine("\"dili\" kelimesinin indeksi: " + indexOfDili);
Console.WriteLine("\"a\" harfinin son indeksi: " + lastIndexOfA);
Console.WriteLine("C# ile başlıyor mu: " + startsWithCSharp);
Console.WriteLine(". ile bitiyor mu: " + endsWithNokta);
String Değiştirme
Bir string içindeki belirli bir alt stringi başka bir alt string ile değiştirmek için Replace()
metodu kullanılır.
string text = "Merhaba Dünya";
string newText = text.Replace("Dünya", "Mars"); // Merhaba Mars
Console.WriteLine(newText);
String Bölme
Bir stringi belirli bir ayraç (delimiter) kullanarak parçalara ayırmak için Split()
metodu kullanılır. Bu metot, bir string dizisi döndürür.
string names = "Ali,Veli,Ayşe";
string[] nameArray = names.Split(','); // ["Ali", "Veli", "Ayşe"]
foreach (string name in nameArray)
{
Console.WriteLine(name);
}
String Kırpma
Bir stringin başındaki ve sonundaki boşlukları veya belirtilen karakterleri temizlemek için Trim()
, TrimStart()
ve TrimEnd()
metotları kullanılır.
string text = " Merhaba Dünya ";
string trimmedText = text.Trim(); // "Merhaba Dünya"
string trimmedStart = text.TrimStart(); // "Merhaba Dünya "
string trimmedEnd = text.TrimEnd(); // " Merhaba Dünya"
Console.WriteLine("Kırpılmış metin: " + trimmedText);
Console.WriteLine("Baştan kırpılmış metin: " + trimmedStart);
Console.WriteLine("Sondan kırpılmış metin: " + trimmedEnd);
String Alt String Alma
Bir stringin belirli bir bölümünü almak için Substring()
metodu kullanılır. Bu metot, başlangıç indeksi ve isteğe bağlı olarak uzunluk parametrelerini alır.
string text = "C# Programlama Dili";
string subString = text.Substring(3); // " Programlama Dili"
string subString2 = text.Substring(3, 10); // " Programlam"
Console.WriteLine("Alt metin: " + subString);
Console.WriteLine("Alt metin 2: " + subString2);
StringBuilder Sınıfı
string
veri tipinin değiştirilemez (immutable) yapıda olması, sık sık string manipülasyonu gerektiren durumlarda performans sorunlarına yol açabilir. Çünkü her değişiklik yeni bir string nesnesi oluşturur ve bu da bellek tüketimini artırır. Bu tür durumlar için C#, System.Text.StringBuilder
sınıfını sunar. StringBuilder
, değiştirilebilir (mutable) bir string sınıfıdır. Yani, içeriği değiştirildiğinde yeni bir nesne oluşturmak yerine mevcut nesne üzerinde değişiklik yapar. Bu, performans açısından önemli bir avantaj sağlar.
StringBuilder Kullanımı
StringBuilder
sınıfını kullanmak için öncelikle bir örnek oluşturmanız gerekir:
using System.Text;
StringBuilder sb = new StringBuilder();
StringBuilder Metotları
StringBuilder
sınıfı, string manipülasyonu için çeşitli metotlar sunar:
Append()
: Stringin sonuna yeni bir string ekler.Insert()
: Belirli bir konuma bir string ekler.Remove()
: Belirli bir aralıktaki karakterleri siler.Replace()
: Belirli bir alt stringi başka bir alt string ile değiştirir.ToString()
:StringBuilder
nesnesinistring
veri tipine dönüştürür.
Örnekler:
using System;
using System.Text;
public class Example
{
public static void Main(string[] args)
{
StringBuilder sb = new StringBuilder("Merhaba");
sb.Append(", Dünya!"); // Merhaba, Dünya!
sb.Insert(7, " Sevgili"); // Merhaba Sevgili, Dünya!
sb.Remove(7, 9); // Merhaba, Dünya!
sb.Replace("Dünya", "Mars"); // Merhaba, Mars!
string result = sb.ToString();
Console.WriteLine(result); // Merhaba, Mars!
}
}
StringBuilder ve String Karşılaştırması
Aşağıdaki örnek, string
ve StringBuilder
arasındaki performans farkını göstermektedir. Bir döngü içinde sürekli string birleştirme işlemi yapıldığında, StringBuilder
‘ın performansı string
‘e göre çok daha iyidir.
using System;
using System.Diagnostics;
using System.Text;
public class PerformanceExample
{
public static void Main(string[] args)
{
int iterations = 10000;
// String ile performans testi
Stopwatch stringStopwatch = Stopwatch.StartNew();
string text = "";
for (int i = 0; i < iterations; i++)
{
text += i.ToString();
}
stringStopwatch.Stop();
Console.WriteLine("String süresi: " + stringStopwatch.ElapsedMilliseconds + " ms");
// StringBuilder ile performans testi
Stopwatch stringBuilderStopwatch = Stopwatch.StartNew();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < iterations; i++)
{
sb.Append(i.ToString());
}
stringBuilderStopwatch.Stop();
Console.WriteLine("StringBuilder süresi: " + stringBuilderStopwatch.ElapsedMilliseconds + " ms");
}
}
Bu örnekte, 10000 yineleme yapıldığında StringBuilder
‘ın çok daha hızlı olduğu görülecektir.
Sonuç
C# dilinde stringlerle çalışmak, programlama sürecinin önemli bir parçasıdır. string
veri tipi temel metin işleme ihtiyaçlarını karşılarken, performansın kritik olduğu durumlarda StringBuilder
sınıfı önemli bir avantaj sağlar. Bu makalede, string işleme metotlarını ve StringBuilder
sınıfının kullanımını detaylı bir şekilde inceledik. Doğru araçları doğru yerde kullanarak, daha verimli ve performanslı C# uygulamaları geliştirebilirsiniz.
Unutmayın,
string
değiştirilemez (immutable) bir veri tipidir, bu yüzden sık sık string manipülasyonu yapmanız gerekiyorsaStringBuilder
kullanmak daha iyi bir seçenektir.
Bir yanıt bırakın