Skip to content

String İşlemleri

Genel Bakış

String işlemleri, metin verilerini manipüle etmek için kullanılan temel operasyonlardır. C#'ta string'ler immutable (değişmez) yapıdadır ve System.String sınıfı tarafından temsil edilir.

Temel String İşlemleri

  1. String Oluşturma

    string str1 = "Merhaba";
    string str2 = new string('a', 5); // "aaaaa"
    string str3 = string.Empty;
    

  2. String Birleştirme

    string str1 = "Merhaba";
    string str2 = "Dünya";
    
    // + operatörü
    string result1 = str1 + " " + str2;
    
    // String.Concat
    string result2 = string.Concat(str1, " ", str2);
    
    // String.Format
    string result3 = string.Format("{0} {1}", str1, str2);
    
    // String interpolation
    string result4 = $"{str1} {str2}";
    

  3. String Karşılaştırma

    string str1 = "Merhaba";
    string str2 = "merhaba";
    
    // Case-sensitive karşılaştırma
    bool isEqual1 = str1.Equals(str2);
    
    // Case-insensitive karşılaştırma
    bool isEqual2 = str1.Equals(str2, StringComparison.OrdinalIgnoreCase);
    
    // CompareTo
    int result = str1.CompareTo(str2);
    

  4. String Arama

    string str = "Merhaba Dünya";
    
    // Contains
    bool contains = str.Contains("Dünya");
    
    // IndexOf
    int index = str.IndexOf("Dünya");
    
    // LastIndexOf
    int lastIndex = str.LastIndexOf("a");
    
    // StartsWith
    bool startsWith = str.StartsWith("Mer");
    
    // EndsWith
    bool endsWith = str.EndsWith("nya");
    

String Manipülasyonu

  1. Substring

    string str = "Merhaba Dünya";
    string sub1 = str.Substring(0, 7); // "Merhaba"
    string sub2 = str.Substring(8); // "Dünya"
    

  2. Replace

    string str = "Merhaba Dünya";
    string newStr = str.Replace("Dünya", "Mars");
    

  3. Trim

    string str = "  Merhaba  ";
    string trimmed = str.Trim(); // "Merhaba"
    string trimmedStart = str.TrimStart(); // "Merhaba  "
    string trimmedEnd = str.TrimEnd(); // "  Merhaba"
    

  4. ToUpper/ToLower

    string str = "Merhaba";
    string upper = str.ToUpper(); // "MERHABA"
    string lower = str.ToLower(); // "merhaba"
    

String Formatlama

  1. String.Format

    string name = "Ahmet";
    int age = 30;
    string formatted = string.Format("Ad: {0}, Yaş: {1}", name, age);
    

  2. String Interpolation

    string name = "Ahmet";
    int age = 30;
    string formatted = $"Ad: {name}, Yaş: {age}";
    

  3. Composite Formatting

    string name = "Ahmet";
    int age = 30;
    string formatted = string.Format("Ad: {0,-10}, Yaş: {1:D3}", name, age);
    

StringBuilder

  1. Temel Kullanım

    StringBuilder sb = new StringBuilder();
    sb.Append("Merhaba");
    sb.Append(" ");
    sb.Append("Dünya");
    string result = sb.ToString();
    

  2. Performans Optimizasyonu

    StringBuilder sb = new StringBuilder(100); // Başlangıç kapasitesi
    for (int i = 0; i < 1000; i++)
    {
        sb.Append(i.ToString());
    }
    

String Split ve Join

  1. Split

    string str = "Ahmet,Mehmet,Ali";
    string[] names = str.Split(',');
    
    // Birden fazla ayraç
    string[] parts = str.Split(new char[] { ',', ';' });
    

  2. Join

    string[] names = { "Ahmet", "Mehmet", "Ali" };
    string joined = string.Join(", ", names);
    

String Validation

  1. Boş Kontrolü

    string str = "";
    bool isEmpty = string.IsNullOrEmpty(str);
    bool isWhiteSpace = string.IsNullOrWhiteSpace(str);
    

  2. Regex ile Validation

    string email = "test@example.com";
    bool isValid = Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$");
    

Performans Konuları

  1. String Concatenation vs StringBuilder
  2. Küçük string'ler için + operatörü kullan
  3. Büyük veya dinamik string'ler için StringBuilder kullan

  4. String Interning

    string str1 = "Merhaba";
    string str2 = "Merhaba";
    bool isInterned = string.IsInterned(str1) != null;
    

Güvenlik Konuları

  1. SQL Injection

    // Güvensiz
    string query = "SELECT * FROM Users WHERE Name = '" + name + "'";
    
    // Güvenli
    string query = "SELECT * FROM Users WHERE Name = @name";
    

  2. XSS Prevention

    string userInput = "<script>alert('xss')</script>";
    string safeInput = System.Web.HttpUtility.HtmlEncode(userInput);
    

Mülakat Soruları

  1. String Immutability
  2. String'ler neden immutable'dır?
  3. String immutability'nin avantajları ve dezavantajları nelerdir?
  4. String değişikliklerinde performans etkisi nasıl olur?

  5. String Karşılaştırma

  6. String.Equals() ve == operatörü arasındaki farklar nelerdir?
  7. StringComparison enum'ı ne işe yarar ve hangi durumlarda kullanılır?
  8. String.Compare() metodunun dönüş değeri ne anlama gelir?

  9. StringBuilder

  10. StringBuilder ne zaman kullanılmalıdır?
  11. StringBuilder'ın kapasitesi nasıl belirlenir?
  12. StringBuilder vs String concatenation performans karşılaştırması nasıldır?

  13. String Formatlama

  14. String.Format() ve string interpolation ($"") arasındaki farklar nelerdir?
  15. Composite formatting nedir ve nasıl kullanılır?
  16. Custom format provider nasıl oluşturulur?

  17. String Manipülasyonu

  18. Substring() metodunun kullanımında dikkat edilmesi gerekenler nelerdir?
  19. Replace() metodu case-sensitive midir?
  20. Trim() metodunun alternatifleri nelerdir?

  21. String Validation

  22. String.IsNullOrEmpty() ve String.IsNullOrWhiteSpace() arasındaki fark nedir?
  23. Regex ile string validation yaparken dikkat edilmesi gerekenler nelerdir?
  24. String validation için extension method nasıl yazılır?

  25. String Güvenliği

  26. SQL injection nasıl önlenir?
  27. XSS saldırılarına karşı string'ler nasıl korunur?
  28. String'lerde güvenli karakter encoding nasıl yapılır?

  29. String Performansı

  30. String interning nedir ve nasıl çalışır?
  31. String pooling nedir ve ne zaman kullanılır?
  32. String işlemlerinde memory fragmentation nasıl önlenir?

  33. String ve Unicode

  34. String'lerde Unicode karakterler nasıl işlenir?
  35. String.Normalize() metodu ne işe yarar?
  36. String'lerde encoding dönüşümleri nasıl yapılır?

  37. String ve Koleksiyonlar

    • String.Split() metodunun alternatifleri nelerdir?
    • String.Join() metodunda performans optimizasyonu nasıl yapılır?
    • String array'leri ile çalışırken dikkat edilmesi gerekenler nelerdir?

Örnek Kod Soruları

  1. Palindrome Kontrolü

    public bool IsPalindrome(string str)
    {
        // Implementasyon
    }
    

  2. String Ters Çevirme

    public string ReverseString(string str)
    {
        // Implementasyon
    }
    

  3. Anagram Kontrolü

    public bool AreAnagrams(string str1, string str2)
    {
        // Implementasyon
    }
    

  4. String Sıkıştırma

    public string CompressString(string str)
    {
        // Örnek: "aaabbbcc" -> "a3b3c2"
    }
    

  5. String Karakter Sayımı

    public Dictionary<char, int> CountCharacters(string str)
    {
        // Implementasyon
    }
    

Kaynaklar