Algoritmik Kod

Bu yazımda Trim() metotundan bahsedeceğim. Trim metotu string bir ifadenin başındaki ve sonundaki boşlukları siler. Örnek verecek olursam   ”    Algoritmik Kod     ” yazısına Trim metotunu uygularsak “Algoritmik Kod” olarak çıktı alırız. Kodumuzun ana mantığından bahsedecek olursak harflerimizin başlangıç ve bitiş noktalarını belirledikten sonra o noktaların arasındaki tüm harfleri yeni bir diziye aktaracağız. Hadi Birlikte Bu metotu basit bir şekilde nasıl yazacağımızı öğrenelim.

Öncelikle metotumuz bir string ifade döndürecek ve boşlukları silmesi için içine bir metin değeri vereceğiz o halde metotu yazarak başlayalım.

static string trim(string metin) { }

1. Adım: Harflerin Başladığı Noktayı Bulmak

int baslangic = 0;
for (int i = 0; i < metin.Length; i++)
{
    if (metin[i] != ' ')
    {
        baslangic = i;
        break;
    }
}

Trim metotu baştaki boşlukları atacağı için başlangıç indexini belirliyorum. Bunuda for döngüsüyle yapıyorum eğer for döngüsü bir harfle karşılaşırsa duracak (durması önemli çünkü eğer durmazsa bitiş noktasını bulmuş oluruz.) ardından bu değer baslangıç değişkenimize kaydedecek.

2. Adım: Harflerin Bittiği Noktayı Bulmak

int bitis = 0;
int baslangic = 0;
for (int i = 0; i < metin.Length; i++)
{
    if (metin[i] != ' ')
    {
        baslangic = i;
        break;
    }
}
for (int i = 0; i < metin.Length; i++)
{
    if (metin[i] != ' ')
    {
        bitis = i;
    }

Trim metotunun sondaki boşluklarıda silmesi gerektiği için son harfimizin hangi indexe sahip olduğunu da bilmeliyiz. Eğer neden bilmemiz gerektiğini hala anlamadıysanız merak etmeyin sonuca ulaştıkça anlayacaksınız. Son indexi bulmamız için yapmamız gereken 1. Adımdaki gibi bir for döngüsü oluşturup boşluk olmayan kısmın indexini almak ama buradaki fark break; yazarak döngüyü durdurmuyoruz ve böylece son indexi alıyoruz. Bu işlemi metnin sonundan başlayarakta yapabiliriz bu da farklı bir yöntem olur.

3. Adım: Boşluksuz Metini Atmak İçin Yeni Bir Dizi Oluşturmak

static string trim(string metin) { 

    char[] yenimetin = new char[metin.Length];
    int sayac = 0;
    int bitis = 0;
    int baslangic = 0;
    for (int i = 0; i < metin.Length; i++)
    {
        if (metin[i] != ' ')
        {
            baslangic = i;
            break;
        }
    }
    for (int i = 0; i < metin.Length; i++)
    {
        if (metin[i] != ' ')
        {
            bitis = i;
        }
    }
    for (int i = baslangic; i <= bitis; i++)
    {
        yenimetin[sayac] = metin[i];
        sayac++;
    }
    return new string(yenimetin);
}

Şimdi İse yeni bir dizi oluşturuyorum bir char dizisi. Yapacağımız işlem bulduğumuz başlangıç değerini kullanarak metin[baslangic] harfinden başlayıp bulduğumuz bitis indexini kullanarak metin[bitis] harfine kadar harflerimizi yeni oluşturduğumuz diziye tek tek atmak olacak ve böylece boşluklardan kurtulmuş olacağız.

Son Adım: Değerlendirme

static void Main(string[] args)
{
    string metin = "        Algoritmik Kod    ";
    string bosluksuzMetin = trim(metin);
    Console.WriteLine(bosluksuzMetin);
    Console.ReadKey();
}
static string trim(string metin) { 

    char[] yenimetin = new char[metin.Length];
    int sayac = 0;
    int bitis = 0;
    int baslangic = 0;
    for (int i = 0; i < metin.Length; i++)
    {
        if (metin[i] != ' ')
        {
            baslangic = i;
            break;
        }
    }
    for (int i = 0; i < metin.Length; i++)
    {
        if (metin[i] != ' ')
        {
            bitis = i;
        }
    }
    for (int i = baslangic; i <= bitis; i++)
    {
        yenimetin[sayac] = metin[i];
        sayac++;
    }
    return new string(yenimetin);
}}

Sonuç olarak kendi basit trim metotumuzu yazdık. Daha gelişmiş versiyonları bu yazı güncellenerek eklenecektir.Kodu mainden çağırıp sonucu görmek isteyenler için kodun tamamını yan tarafa bırakıyorum.Bir sonraki yazımda görüşmek dileğiyle 

– Enes Türkay