C# String Temizleme (Clean String) Fonksiyonu

17 Kas 2016 · 2 dk okuma süresi

Bugün neredeyse her uygulamada gerekebilecek bir string temizleme(clean string) fonksiyonunu paylaşacağım. Bu fonksiyonu özellikle veritabanına veri eklerken verilerin düzenli olmasını ve verilerin kararlılığını sağlamak amacıyla kullanabiliriz.

Örneğin bir marka veya ürünleri tutan veritabanınızın olduğunu düşünün. Bu veritabanına girilecek marka veya ürünlerin içerisinde gereksiz tekrar eden boşlukların olmasını istemezsiniz. Bu durum kişinin adını veya soyadını girdiği durumlarda da geçerlidir.

Şimdi ilk olarak C# kütüphanesinin bize sunduğu hazır fonksiyonlardan yararlanarak bu işi en kısa şekilde halledebilecek kod bloklarından birini inceleyelim.

public static string cleanString(string inputStr)
{
  // Alttaki Regex sınfının Replace() fonksiyonu 3 parametre alıyor.
  // Birinci parametre: düzenlemek istediğiniz string
  // İkinci parametre: Metinde aranan kalıp(pattern). Burada \s+ kalıbı ile tekrar eden boşluklar kastediliyor
  // Üçüncü parametre: İkinci parametrede belirlenen kalıpla eşleşen karakterlerin hangi karakter ile değişeceğini kastediyor.

  return System.Text.RegularExpressions.Regex.Replace(inputStr, @"\s+", " ").Trim();
}

Bu fonksiyon öncelikle System.Text.RegularExpressions Namespace içerisinde bulunan Regex sınıfının Replace() fonksiyonu kullanarak tekrar eden boşlukları tek bir boşluk karakterine dönüştürmüş. Ardından String sınıfının fonksiyonu olan Trim() fonksiyonu kullanılarak Regex.Replace() fonksiyonunun döndürdüğü değerin içerisinde varsa başındaki ve sonundaki boşluklar temizlenmiş. Son durumda fonksiyonun döndürdüğü string tipindeki değer düzenli ve gereksiz boşluklardan arınmış bir yapıya sahip oluyor.

Şimdi gelelim kendi yazdığım ve aslında bir şeyi öğrenmenin etkili olduğu yöntemlerden birine. Şimdi diyelim ki üstte C# dilinin bize sunduğu hazır fonksiyonlar olmasa biz bu işi nasıl yapacaktık veya diyelim başka bir programlama dilinde bu işlemi yapmak istiyoruz ve bu kullandığımız dil C# gibi bize böyle bir kolaylık sağlamamış. O zaman biraz kolları sıvıyoruz ve kendi fonksiyonumuzu yazıyoruz. Altta kendi yazdığım kodu paylaştım. Normalde bu kodu C++ dili için yazmıştım ve altta olduğundan azıcık daha uzun olmuştu. O kodu C# için uyarlayıp burada sizlerle paylaşmak istedim.

Şimdi ise kodu inceleyelim:

public static string cleanString(string inputStr) {
if (string.IsNullOrWhiteSpace(inputStr) || string.IsNullOrEmpty(inputStr)) return string.Empty;
const char spaceChr = ' '; // this is for readability of the following codes
string value = inputStr; //get value of the inputStr into the 'value' variable
int length = value.Length; //get length of the value into the 'length' variable
char firstChrIterator = '\0',
SecondChrIterator = '\0'; // '\0' is mean null char
int temp = 1;
//Removing recurring space characters until remaining a single one
for (int i = 0; i < length - temp; i++) {
firstChrIterator = value[i];
SecondChrIterator = value[i + 1];
if (firstChrIterator == spaceChr && SecondChrIterator == spaceChr) {
value = value.Remove(i, 1);
i--;
temp++;
}
}
#region //You can use value.trim() before the For Loop above instead of the codes in this region
if (value.Length > 0) {
//Remove space character on the front of the value if exist
if (value[0] == spaceChr) value = value.Remove(0, 1);
if (value.Length > 1) //Remove space character at the end of the value if exist
if (value[value.Length - 1] == spaceChr) value = value.Remove(value.Length - 1, 1);
}#endregion
return value;
}
view raw CleanString.cs hosted with ❤ by GitHub

Kodların açıklamaları üstlerinde mevcut. Dilerseniz bu kodu daha da pratik ve kısa hale getirerek geliştirebilirsiniz. İyi çalışmalar  :-)