C# String Methodları – II (Replace, SubString, ToCharArray, Trim)


Giriş

Bu yazının 1.bölümünde (C# String Methodları – I) EndsWith-StartsWith, ToUpper-ToLower, IndexOf, PadLeft-PadRight, Remove methodlarını anlatmaya çalıştım. Bu yazımda da bahsetmek istediğim 5 tane daha string methodu var.

String method ları bizim sıkça kullanacağımız ve ihtiyaç duyacağımız methodlardır. Hepimizin şimdiye kadar aşağıdaki durumlar ile ya karşılaştık ya da karşılaşacağız;

  • String içerisindeki bir string i değiştirme,
  • String içerisinde belli bir yerden, belli bir sayı kadar karakter alma,
  • Bir string i karakterlerine ayırma,
  • String in başlangıcındaki ve/veya bitimindeki boşlukları silme,

Bu ve benzeri işlemleri yapmak için bu yazımda anlatacağım String Methodlarını kullanacağız. Bu yazımda anlatacağım Methodlar; Replace, SubString, ToCharArray, Trim

Hatırlatma ve Dikkat Edilmesi Gerekenler

Bu örneği C# dili ile .net 4.0 versiyonunda Visual Studio 2010 Ultimate programında yazıyorum.

Mantık Yürütme

Türkçe temelli dünyaca geçerli bir programlama dili geliştiremediğimiz için diğer dillerde, tabiki de ingilizce, geliştirilen programlama dillerini kullanıyoruz. Eğer biraz ingilizce bilginiz varsa methodları gördüğünüzde anlayabilir, açıklamalarına dikkat ederek kullanabilirsiniz. Hadi başlayalım.

Kodlama

*Replace

Kullanımı bazen oldukça işine yarabilir. String içerisinde bir string i başka bir string ile değiştirebilirsiniz veya string içerisinde karakteri(char) başka bir karakter ile değiştirebilirsiniz. İlk önce değiştireceğimiz stringi veya char ı daha sonrada değişlik için kullanacağımız stringi veya char ı yazıyoruz.

kelime "Buradaki tüm a harfleri büyük";
MessageBox.Show(kelime.Replace('a', 'A')); // tek tırnak ile tanımladık, yani char türünde, çıktı olarak "BurAdAki tüm A hArflari büyük"
 
kelime2 "C# %100 nesneye yönelimli bir programlama dilidir. ";
MessageBox.Show(kelime2.Replace("neseneye yönelimli", "nesne tabanlı")); // ekran çıktısı: "C# %100 nesne tabanlı bir programlama dilidir"


*SubString

Benim çok sevdiğim ve kullanışını oldukça başarılı bulduğum bir method. String içerisinde belli bir karakterden sonraki bölümü seçmemiz yarar. 2 türlü kullanımı vardır;

1. Kullanım

 

string kelime = "Mahmut Can Sözeri"; //Burada "M" 0.karakterdir. Bunu unutmamak gerekiyor
MessageBox.Show(kelime.Substring(7,3)); //Ekran çıktısı olarak "Can" ı verecektir. 7.karakterden başlayarak 3tane seçim yapar.

Duzeltme: Yukaridaki SubString(6,3) iken sonuc " Ca" dir. 

2. Kullanım

string kelime = "Mahmut Can Sözeri";
MessageBox.Show(kelime.Substring(6)); //Ekran çıktısı olarak "Can Sözeri" yi verecektir. 6.karakterden başlayarak son karaktere kadar seçim yapar.

*ToCharArray

String içeriğini karaktere ayırır. 2 türlü kullanımı vardır;

1.Kullanım

char[] karakterler = kelime.ToCharArray(); // Anahtar bölüm işte burası, burada karakterler adında char türünde bir dizi oluşturuluyor ve içerisine atılıyor. Yani aşağıdaki foreach yerine karakterler[sayi] diyerek ulaşabilirsiniz.
foreach (char karakter in karakterler) // Foreach bu tarz işlemler için tam anlamıyla biçilmiş kaftandır. Örnekte iyi olacağını düşünüyorum
{
listBox1.Items.Add(karakter); // Bu bölümde bulunan karakterleri listbox1 a sırayla ekliyor. Yani ekran çıktısı olarak sırasıyla alt alta;M,A,H,M,U,T, ,C,A,N, ,S,Ö,Z,E,R,İ dir. Boşluklarında dahil olduğunu unutmayalım. Burada bir if kontrolü ile boşlukları eklemeyebiliriz.
}

2.Kullanım

char[] karakterler = kelime.ToCharArray(3,5); //SubStringteki mantık ile çalışır yani 3.index numarasından başlar ve daha sonraki 5 karakteri alır.

*Trim

Özellikle web uygulamalarında çok yaygın şekilde kullanılan bir uygulamadır trim. Bir string in başlangcındaki ve bitişindeki boşlukları temizler ve bize sadece yazılan içeriği yani anlamlı bölümü verir. TrimEnd ve TrimStart gibi methodlardan mevcuttur. Bunları burada anlatmayacağım. Uygulamalar yaptığımda eğer gerekirse kullanırım ve bunları paylaşırım.

Kullanım

string kelime = "     Mahmut Can Sözeri       ";
MessageBox.Show(kelime.Trim()); //Ekran çıktısı olarak "Mahmut Can Sözeri" yi verecektir. Kenardaki boşluları almayacaktır. Bu örneği iyi anlamak için önce boşluklu halinin Length ile uzunluğunu alıp daha sonra bu işlem sonucunda aldığınızda aradaki farkı göreceksiniz.

İndirme

İndirme linkini bir kaç güne aktif edeceğim.

Umarım faydalı olmuştur.

İyi kodlamalar

, , , ,

  1. #1 by ali on November 16, 2011 - 3:25 am

    C# dilini daha yeni öğreniyorum anlamını çözemediğim kodları internetten araştırıyorum sizin açıklmalarınız gerçekten çok sade ve anlaşır. Emeğinize sağlık

    birde “enumerator” kodunun işlevi nedir anlatırsanız bana çok faydası olacak.

  2. #3 by c# cı smy on April 16, 2012 - 8:34 pm

    gerçekten çok yararlı oldu emeğiniz için teşekkür ederim 😀

  3. #5 by Obs on June 10, 2012 - 1:50 pm

    Bugünkü sınavımda hayat kurtarıcı oldu bu bilgiler.Teşekkürler 🙂

  4. #6 by Emrah ipekyol on August 20, 2012 - 3:34 pm

    Teşekkürler emeğinize sağlık.

  5. #7 by Cenk Eren on September 5, 2012 - 10:52 pm

    Sade ve anlaşılır anlatım. Gerçekten işime yaradı.Teşekkürler

    • #8 by ragıp on March 26, 2014 - 7:26 pm

      ne işine yaradı gözünü sevdüğüm bi halta yaramadı bu kodlar

  6. #9 by furkan on September 22, 2012 - 6:02 pm

    Yazının yarısına gelmede bu sitenin yer imlerimin en başında yer alması gerektiğini anladım 😀

    Çok teşekkür ederim paylaşımlarınız gayet güzel ve başaraılı.

  7. #11 by elif on March 25, 2013 - 8:08 pm

    string kelime = “Mahmut Can Sözeri”;
    MessageBox.Show(kelime.Substring(6,3)); bunu kimse denedemidi mi ? çıktısı ” ca” şeklinde oluyo

    • #12 by Mahmut Can Sozeri on May 3, 2013 - 9:02 am

      Elif Hanim merhaba,

      Evet soylediginiz gibi ciktisi ” Ca” seklinde olmaktadir. …kelime.SubString(7,3) olarak calistirdigimizda sonuc “Can” olmaktadir. Burada 6. index teki bosluk alinan 1.karakterdir. “C” ve “a” da diger 2 karakter.

      Tesekkurler ilginiz icin

  8. #13 by Örümcek Adam on December 8, 2013 - 9:47 am

    Yararlı. Teşekkürler

  9. #14 by Murat on December 26, 2013 - 12:16 am

    Bu sadece ve güzel anlatımın için teşekkür ederim, çok yararlı olmuş.

  10. #15 by Şerife on June 4, 2015 - 6:08 pm

    c# da yaklaşık 100 tane radio buton var ve ben bu radio butonların hepsinin check özelliğini false yapmak istiyorum. for each kullanamam çünkü 20-30 tane de frame içindeler. for döngüsü ile yapmak istiyorum ama nasıl yapacağımı bir türlü bulamadım. yardımcı olabilirseniz çok sevinirim. bu arada anlatımınız çok güzel teşekkür ederim.

    • #16 by Mahmut Can Sozeri on July 8, 2015 - 7:17 pm

      Selamlar,

      Burada yapılabilecek en iyi mantık şu olur; recursive olarak bir metot oluşturursunuz. Bu metot sürekli kendini çağırarak her bir kontrolün içerisinde de radio button olmasını inceler. Eğer bana bir email atarsanız örneğinizi size çözüm için örnek kod yollayabilirim vaktim olduğunda.

      İyi çalışmalar

  11. #17 by pandora on December 23, 2015 - 6:04 am

    Hocam çok teşekkürler. SubString olayınız sayesinde uygulama projem bitecek gibi.çok sağolun. o komut sayesinde “yyyy.mm.dd” şeklindeki tarihten yıl verisini kırpıp aldım sağolun

  12. #18 by Hamza Şentürk on January 14, 2016 - 9:24 am

    Merhabalar hocam;
    substring 1.kullanımında hata yapmışsınız düzeltme diyip “ca” demişsiniz doğru cevab messagebox’da Can diye ekrana çıkıcaktır.

    • #19 by Mahmut Can Sozeri on January 14, 2016 - 9:28 am

      Selamlar Hamza Bey,

      Düzeltme diye yazdığım SubString(6,3), fakat Can’ın dönmesi için 7,3 olması gerekmektedir. Tekrar kontrol edebilir misin?

      İyi çalışmalar

  13. #20 by melek on November 10, 2016 - 3:55 pm

    merhabalar hocam ben split methodunda dizilerimi bosluk göerene kadar ayırıp diziye atıyor ama onların indislerine ulasamıyorum nasıl ulasa bilirim

    • #21 by Mahmut Can Sozeri on November 10, 2016 - 4:00 pm

      Selamlar,
      string[] dizi = (“5,6,7,8,9,10″).Split(‘,’) dediğinizde for döngüsü ile döndüğünüzde dizi[i] diyerek ideksine ulaşabilirsiniz. Örneğin burada 10 sayısının index numarasını elde etmek istiyorsanız: Array.FindIndex(dizi,”10”)); dediğinizde geriye döndürecektir. Yani Array.FindIndex metodunu kullanabilirsiniz.
      Faydalı olması dileğiyle.

  14. #22 by Taner H. on November 28, 2017 - 5:01 pm

    Benim şu tip bir ihtiyacım var web sayfa içindeki paragraflardan birinde @adsoyad, @vergino gibi değişkenlerim var. Web sayfasını kelime değişkenine nasıl atarım. Onu atınca sanırım replace komutu görevini yapacak ???

    • #23 by Mahmut Can Sozeri on January 24, 2018 - 11:00 am

      Hayırlı günler Taner Bey, burada web sayfası dediğiniz hangi teknoloji kullanıyorsunuz? Sorunun cevabı buna göre değişebilmektedir.

  15. #24 by hasan tirtom on March 15, 2018 - 8:43 am

    Hocam kolay gelsin visualstudio C# da combobox’dan ocak 2018 gibi bir değeri seçip buna değere göre database de (access) tarih değerine göre arama yaptırmak istiyorum. Yani Ocak 2018 seçildiğinde 01.01.2018 – 31.01.2018 arasındaki kayıtları getirsin istiyorum. Bunu nasıl yapabilirim?
    comboboxtan gelen değeri string türünde bir değişkene tanımlayıp ilk 4 karaktere göre ay değerini bulup sonuna yılı ekleyerek bir arama yaptırmayı düşündüm ama içinden çıkamadım. yani “TEMM” değerini gördüğünde “07” alıp sonuna son 4 karakteri eklesin “2018” sonra arama yapsın gibi düşünmüştüm.

    • #25 by Mahmut Can Sozeri on October 9, 2018 - 7:19 am

      Merhaba Hasan Bey, burada aslında temel olarak yapmak istediğiniz bir listeleme işlemi. Bunu örneğin SQL’de bir script oluşturarak, parametre olarak tarihi gönderebilirsiniz. Tarihi gönderirkende isterseniz DateTime’a gün, ay, yıl olarak verebilirsiniz.

  16. #26 by Melike Bulut on March 13, 2019 - 9:29 pm

    Hocam bir sorum olucaktı. Mesela “if” komutunu değiştirebilir miyiz “split” metodu ile ve değiştirdiğimiz komutun doğru olup olmadığını ekrana yazdırabilir miyiz?

    • #27 by Mahmut Can Sozeri on March 14, 2019 - 7:32 am

      Selamlar Melike Hanım, tam olarak anlayamadım. Kod örneği paylaşabilirseniz dönüş yapayım.

      • #28 by Melike Bulut on March 14, 2019 - 12:44 pm

        Haklısınız hocam. Mesela c# da normal olarak kullandığımız if komutu nasıl ;
        if(koşul){
        komutlar;
        }
        bu şekildedir. Biz bunu strring, split, dizi, for, if kullanarak;
        if(koşul) komut
        haline getirebilir miyiz.

      • #29 by Mahmut Can Sozeri on March 14, 2019 - 1:41 pm

        if (true) var dizi = “Mahmut Can”.split(” “);
        yapılabilir. If ile birlikte komutlar dediğiniz yere eklemeleri yapabilirsiniz.

  17. #30 by Tunahan on December 29, 2019 - 12:48 am

    Hocam benim bir sorum olacak. C# ta belirli karakterlerden sonra sadece o karakterlerin önüne kelime eklemem istiyorum bunu nasıl yapabilirim. Örneğin elimde bir paragraf var bu paragraftaki virgüller den sonra kelime eklemek. yani;
    Okunan dosyada ‘ , ‘ işareti görülen yerlerden sonra ‘ dene’ kelimesi eklenmeli.

    asefasef,”dene”aesfase,”dene”asefase,”dene”asefaseasef,”dene”asefasefase,”dene” gibi…

    yardımcı olursanız çok sevinirim.

    • #31 by Mahmut Can Sozeri on December 30, 2019 - 7:11 am

      Selamlar Tunahan Bey, en kolay yöntem şu aolabilir. Örneğin cümle şu olsun: var txt= “ali ata baktı, sonra, bir daha baktı.” Burada “,” den önce veya bir kelime ya da karakterden önce ekleme yapmak istiyorsanız. txt = txt.Replace(“,”,”OneKoyulacakHarfveyaKelime,”) çalışacaktır.

  18. #32 by YAVUZ ARSLAN on May 16, 2020 - 3:14 am

    Hocam iyi günler ben tesseract OCR kütüphanesi kullanarak bir görüntüden sayıları listboxa çektim bu sayıların arasında dört işlem simgeleri de var. Yapmaya çalıştığım şey bu sayıları aralarındaki işaretlere göre işleme sokmak. Bu matematiksel işlemi nasıl yapabilirim yardımcı olursanız çok mutlu olurum.

  19. #34 by Nuri Ahmet Şimşekli on May 23, 2020 - 12:10 am

    Barkod no : 01086995464934012166GA4DEE671721060410ECAB103788

    01 ile başlayan firma kodu

    21 ile başlayan seri numarası (değişken uzunluk olabiliyor) en fazla 20 karakter

    17 ile başlayan yyaagg

    10 ile başlayan parti no (değişken uzunluk olabiliyor) en fazla 20 karakter

    Yani bu barkodu ayrıştıracaz.

    Firma kodu : 08699546493401

    Seri No : 66GA4DEE67

    Üretim Tarihi : 210604

    Bunu c# da nasıl ayrıştıracaz 🙄🙄

    Şimdiden teşekkürler

    • #35 by Mahmut Can Sozeri on May 25, 2020 - 3:27 pm

      Selamlar Nuri Ahmet Bey,

      Öncelikli olarak eğer burada ihtiyaca göre substring ve find metotları kullanılabilir. Çünkü burada eğer sabit karakter sayısında firma kodu, seri numarası, parti no ayrıştırılıyorsa sadece SubString yeterli olacaktır. Örneğin;
      string barkod = “01086995464934012166GA4DEE671721060410ECAB103788”;
      string firmaKodu = barkod.Substring(0,2); //01 gelecektir.

      Diğerlerinde hangileri belirli bir uzunluğa sabit ise mesela seri numarası değişiklik uzunluk olabilir demişsiniz. Mesela üretim tarihi alınabilir. Burada örneğin X karakterinden sonra firma kodu gelir gibi bir ibare var ise bu durumda söylediğim gibi öncelikli olarak Find ile bu X karakterinin hangi indexte olduğu bulunmalıdır. Sonrasında ise bu index’e göre ayrıştırma yapılabilir.

      Kolay gelsin.

  1. 2012 Yılında Blogumun İle İlgili Rakamlar « Mahmut Can Sözeri

Leave a reply to Murat Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.