STRİNG ÜZERİNDE İŞLEM YAPAN METODLAR

STRİNG ÜZERİNDE İŞLEM YAPAN METODLAR

 

Merhaba yazılımcı dostlarım bu makalemde sizlere string metodlarını açıklayıp hepsine küçük ama güncel örnekler vermeye çalışacağım. Bu makalenin yazılıma yeni başlayan arkadaşlar için çok faydalı olacağına inanıyorum. Unutmayın ilerde büyük projeler yapmak istiyorsak alet çantamızı iyi doldurmamız gerekir, string metodları da en önemli aletlerdendir. Tolga hocama teşekkür ederek makaleme başlamak istiyorum, Teşekkürler Hocam.

 

String:

 

Karakter sınırı verilmezse 2 milyara kadar atama yapılabilen sayısal olmayan veri tipidir. String veri türü Unicode karakterlerden oluşan bir dizi gibi algılayabiliriz. Unicode stringlerde her karakter 2 bayttan oluşur ve Uzakdoğu dillerindeki karakterleri de içerebilirler.

 

Stringler üzerinde sayısal işlem yapılmayacak veri türleridir. İçersinde metin bulunan ifadeler string değişkenlerle tanımlanırlar.

 

C# ta string ifadeler çift tırnak içersinde yazılır ve ile özel karakterler string içersine yerleştirilebilinir.

 

  • Örneğin bir string içinde bir alt satıra geçmek için n karakterini

kullanabilirsiniz.

 

Basit bir örnekle açıklamak istiyorum, bir buton ekleyip çift tıklayın ve aşağıdaki kodları yazalım.


 

 

 

 

 

 

 

 












Görüldüğü gibi n karakterinden sonraki kelimeler alt satıra geçmiştir.

 

  • Ters kesme karakteri () stringler içersinde özel kod kullanımına izin verir. Bu yüzden string içersinde ters kesme işareti kullanmamız gereken durumlarda iki tane kulanmamız gerekir. Örneğin C:mehmet.txt dosyasını belirtirken C:mehmet.txt şeklinde kullanmalıyız.

 

String Str;

Str=”C:mehmet.txt”;

 

Bu tür kullanımlara escape sequence kullanımı denir.

 

  • Bu tür kullanımın yerine string içersinde görünen ifadenin aynısını belirtmek için string ifadesinin önüne @ işareti konulur.

 

String Str;

Str =@”C:mehmet. txt”;

 

String üzerinde işlem yapan metodlar

 


 

 

 

 

 

 

 

 

 

 

 















Visual C#.NET te string tipide diğer tipler gibi birer nesne olduğundan çok sayıda özelliği içinde bulundururlar.

 

Bir string değişken tanımlayıp değişken isminden sonra nokta işareti bırakırsanız o değişken üzerinde işlem yapacağınız bir liste çıkar.

 

Şimdi bu propertiesi ve metodları teker teker inceleyelim.

 

 

Length

 

Stringin uzunluğunu verir,bu stringin bir propertiesidir.

Basit bir örnekle daha iyi anlayacağımızı düşünüyorum.

 








ToLower()

Stringi küçük harfe çevirir.

 

ToUpper()

Stringi büyük harfe çevirir.

Örneğin kullanıcıdan soyismini büyük harfle girmesini istiyorsunuz, bunu kullanıcıyı zorlamadan kendimiz yapabiliriz.

 

 

 

*Önemli Bilgi: ToUpper ve ToLower metodlarını parametre olmadan kullanırsanız Windows ‘un dil ayarına göre çevirme yapar. Türkçe bir Windows ta Türkçe kurallarına uygun çevirim yapılır.

 

Çevrimi başka bir dil kuralına göre yapmak isterseniz bu metodlara başka bir parametre ekleyip dili belirleyebilirsiniz. Parametre olarak System.Globalization.CultureInfo("en") verirseniz İngilizce yazım kurallarına göre büyük veya küçük harfe çevrilecektir.

Burara bize sonucu PRINT olarak döndürecek.

 

Karşılaştırma Metodları:

 

İki stringi karşılaştırmak için == operatorünü kullanabiliriz ancak bu operatör bize kapsamlı bir karşılaştırma sunmaz. Kapsamlı bir karşılaştırma için String sınıfının Compare metodunu kullanırız.

 

Compare

 

Bu metodla iki stringin tamamını veya sadece bir bölümünü büyük küçük harflere dikkat ederek veya etmeden karşılaştırabiliriz.

Compare metodunun en basit yazımı iki string ifadesi içerir.

 

String.Compare(String1, String2)

İki string karşılaştırılır eğer stringler eşitse 0 değeri döner, birinci string büyükse yani alfabetik olarak daha sonra geliyorsa geriye pozitif bir sayı döner, küçük ise negatif bir sayı döner.Küçük bir örnekle makalemize devam edelim.

 

Örnek: Farzedelim bir şirket yazılım uzamanı alıyor ve eğitim gördüğümüz kurumun ismini soruyor. Eğer Bilgeadam cevabı verilirse başvurumuz kabul ediliyor aksi takdirde işe alınmıyoruz.

 

Öncelikle formumuza label,textbox birde buton ekleyelim.Formumuz aşağıdaki gibi…

 

Sıra geldi butonun click olayına aşağıdaki kodları yazalım.Hadi şanslısınız işe alındınız..

 

 

Şimdi siz hemen bana soracaksınız “eğer kullanıcı Bigeadam kelimesini BİLGEADAM veya bilgeadam diye girerse kabul edilmeyecek mi?” diye.

Evet sevgili dostlar maalesef kabul edilmeyecek.Çünkü karşımıza büyük küçük harf sorunu çıkıyor,ama korkmayın “.NET” te çözümler bitmez,yeter ki biz iyi bilelim.Bu kullanım sayıların karşılaştırılmasında,şifre işlemlerinde daha kullanışlıdır.

 

Büyük küçük harf ayrımı yapmadan karşılaştırma

Compare metodunun diğer kullanım şekli büyük küçük harf ayrımı yapılıp yapılmayacağını belirten üçüncü bir paremetre içerir.

 

String.Compare(String1, String2,AyrımYapılsınmı)

 

Bu kullanımda son parametre True olursa büyük küçük harf ayrımı yapmadan karşılaştırma yapar.

 

Eğer kodlarımız bu şekilde olursa problem ortadan kalkar,ister bilGeAdAm yazın yine işe girersiniz.Dedim ya .NET te çözüm bitmez..

Stringin bir parçasını karşılaştırma

 

String.Compare(String1, kaçıncı_harften,String2,kaçıncı_harften,kaç_harf)

Bu şekilde kullandığımızda stringin tamamını değil sadece bir kısmını karşılaştırmış oluruz.

 

kaçıncı_harften parametresi ile karşılaştırmanın string içinde kaçıncı harften itibaren yapılacağını belirtebilirsiniz. Stringlerde index numarası 0 dan başladığı için,ilk harf için 0,ikinci harf için 1 diye gider.

kaç_harf parametresi ile de karşılaştırmanın kaç harf üzerinden olacağını belirleriz.

 

Örneğin iki stringin ilk üç harfinin aynı olup olmadığına bakalım.






Eğer burada da büyük küçük harf ayrımı yapılmamasını istiyorsak en sona true ekleriz..

 

 

Burada da hangi dile göre karşılaştırma yapacağımıza dikkat etmeliyiz. Eğer karşılaştırmamız İngilizce olacaksa. Aşşağıdaki gibi yazmalıyız.

 

String.Compare(Str1,Str2,true,new System.Globalization.CultureInfo("en"))

 

CompareTo(String)

İki stringi karşılaştırmanın bir diğer yolu da bu metodu kullanmaktır. Compare metodunu kullandığımızda String.Compare(str1,str2) şeklinde yazıyorduk.Str1 ‘in CompreTo metoduyla Str2 ‘ye eşit olup olmadığını Str1.CompareTo(Str2) şekinde yazarız. Yukardaki Bilgeadam örneğimizi bu metodla yapmayı deneyelim.

 

 

Bu metodta büyük küçük harf ayrımı yapacak bir parametere bulunmaz, verilen cevap Bilgeadam olmalıdır, harflerin birebir aynı olması gerekir.

Burada çözüm olarak textbox a girilen stringi ToUpper metodu ile büyük harfe çevirmemiz ve şartımızdaki cevabıda büyük harfle yazmamız gerekir, yani;

 

Burada textbox a girilen string büyük veya küçük harf olması hiç önemli değildir, çünkü Toupper metodu büyük harfe çevirir, şartımızda büyük harf olduğu için karşılaştırmadan dönen sonuç sıfır olacaktır.

 

Equals(string)

 

İki stringi karşılaştırmanın diğer bir yoluda Equals metodunu kullanmaktır. Eğer karşılaştırılan stringler eşitse true, eşit değilseler false değeri geri döner.

İki kullanım şekli vardır;

 

· String.Equlas(Str1,Str2)

· Str1.Equals(Str2)

CompareTo metodunda olduğu gibi burada da küçük büyük harf sorununu halletmek için ToUpper ve ToLower metodları kullanılır.

 

StartWith(Metin)

Stringin belirttiğimiz metinle başlayıp başlamadığını kontrol eder. Belirttiğimiz metin ile başlıyorsa geriye true değeri döner, değilse false.

 

EndsWith(Metin)

Stringin belirttiğimiz metin ile bitip bitmediğini kontrol eder. Belirttiğimiz metin ile bitiyorsa geriye true değeri döner, değilse false.

 

  • Mesela kullanıcıdan adresini girmesini istiyeceğiz. Kullanıcı doğal olarak adresin en sonunda bulunduğu şehri yazacak. Bizde İstanbul’da ikamet eden kullanıcıları kabul edeceğiz. EndsWith metodu işimizi görmeye yara.

 

if(textBox1.Text.ToUpper(). EndsWith("İSTANBUL"))

MessageBox.Show("İş başvurunuz kabul edildi");

else

MessageBox.Show("İş başvurunuz kabul edilmedi");

Textboxa girilen adresi ToUpper metodu ile büyük harfe çeviriyoruz daha sonra EndsWith metodu ile adresin İSTANBUL kelimesi ile bitip bitmediğini kontrol ediyoruz.

 

Boşlukları Atma:

 

Kullanıcıdan bir metin girmesini istediğinizde, kullanıcı metnin başına veya sonuna yanlışlıkla fazladan boşluk koyabilir,buda karşılaştırma işlemlerinde sonun çıkarır.Boşlukları atmak için üç tane metod bulunur.

 

TrimStart()

Stringin başındaki boşlukları kaldırır.

 

TrimEnd()

Stringin sonundaki boşlukları kaldırır.

 

Trim()

Stringin her iki tarafındaki boşlukları kaldırır.

 

Kullanım şekli ---> string.Trim()

  • Trim metodları sadece boşlukları değil stringin başında ve sonunda sizin belirlediğiniz karakterleride atabilir.

 

String.Trim(Karakter_Listesi) şeklinde kullanılır.Örneğin stringin sonunda bulunabilecek noktalama işaretlerini atmak istersem;

 

String.TrimEnd('.', ',', ':', ';') ifadesini yazmam yeterli olacaktır.

String Parçalama:

Stringin bir parçasını almak için bu metod kullanılır. Bu metodu iki türlü yazım şekliyle kullanabiliriz.

 

SubString(Başlangıç) --à Metod bu şekilde tek parametre ile kullanılırsa stringin belirtilen başlangıç noktasından itibaren olan kısmını geriye dönderir. Örneğin;

 

string str="mehmet";

MessageBox.Show(str.Substring(2)); // sonuç "hmet" olur.

 

0 1 2 3 4 5 -àindex numaraları..

m e h m e t

 

Verilen değer 2 olduğu için, üçüncü sıradaki harf olan h den başlar ve sona kadar alır.

Diğer yazım şekli ise iki parametre içerir.

 

SubString(Başlangıç,Uzunluk) -àBu durumda ise belirtilen noktadan belirtilen uzunluktaki metin alınır.

 

string str="bilgeadam";

MessageBox.Show(str.Substring(2,5)); // sonuç "lgead" olur.

 

 

  • Güzel bir örnek:

Evet sevgili dostlar sıra geldi substring metoduna güzel bir örnekle devam etmeye. Yapmak istediğimiz olay; kullanıcının text kutusuna yazdığı yazıyı yürütmek…

 

Şimdi sevgili dostlar yapmak istediğimiz programın algoritmasını kafamızda oluşturalım ve bize gerekli olan araçlar, yazıyı üzerinde yürüteceğimiz bir tane textbox, ve her 100 milisaniyede tetiklenecek, altındaki kodu çalıştıracak Timer gerekli.

 

Formu tasarladıktan sona formun load kısmına ve timerin tick ine aşağıdaki kodları yazalım.

 

 

İlk olarak formun load kısmında textboxımızın textine yazılacak stringi belirledik. Ve timerin interval özelliğini yani nekadar zaman aralığında çalışacağını belirledik.Ve en son olarak enabled özelliğini True yaptık.

 

İkinci olarak timerin her 100milisaniyede çalıştıracağı kodları yazdık.

textBox1.Text.Substring(1) àbu satır bize ilk karakterden sonrasını verir..

textBox1.Text.Substring(0, 1) àBu satır ise soldan ilk karakteri verir.

 

Evet sevgili yazılımcı dostlarım bu şu demek oluyorki,bu iki satır birleştiğinde soldaki ilk karakter diğer yazının en sonuna geçmiş oluyor ve her 100 milisaniyede sıradaki karakter en sona geçiyor,yazıda yürüyormuş gibi gözüküyor.F5 tuşuna basıp programımızı çalıştırdığımız zaman görüntü aşşağıdaki gibi olacaktır.

 

 

Split(Ayırıcı_Karakter)

Bir metini belirlenmiş karakterlere göre ayıran metodtur. Split(‘ ‘) bu ifadeden geriye dönen değer ayırıcı karakterlerden ayrılmış stringlerdir. Geriye birden fazla string döneceği için geriye dönen değer bir string diziye aktarılmalıdır.

 

  • Örneğin: “Mehmet, Tuba, Merve ” stringinin virgül karakteriyle parçalamak isteyelim. Bu stringte virgülle ayrılmış üç string var.

 

"Mehmet, Tuba, Merve ".Split(','); // geriye üç adet string döner

Eğer dönen bu değerleri bir diziye aktarmak isterseniz,aşşagıdaki kodlarla bunu başarırız.

 

string[] str;

str="Mehmet, Tuba, Merve ".Split(',');

 

Evet sevgili dostlar durmak yok,derin bir nefes alıp güzel bir örnekle yolumuza devam edelim. Şimdi kullanıcıdan adını ve soyadını textboxa girmesini isteyecez,bize düşen görev ise soyismini büyük harfe çevirmek.

Burada soyismini ayırt etmek için ad ile soyisim arasındaki boşluktan yararlanabiliriz.Kodlarımızı aşşağıdaki gibi yazalım.

 

 

Split metodunun bir diğer kullanımı da şu şekildedir.

 

Split(‘Ayırıcı_Karakter’,Kaç_Adet) à Parçalanan stringin tamamını almak istemiyorsak, ikinci parametre olarak kaç adet parça istediğimizi belirtmeliyiz.

 

Size bir değişik kullanım daha göstermek istiyorum yazılımcı dostlarım.

Örneğin stringi aynı anda nokta, virgül ve iki nokta karakteri ile bölmek istersek yazacağımız kod şöyle olmalı.

 

string str;

string [] s;

char []boluculer ={ ‘.’ , ‘,’ , ‘:’ }; -àBurada bölücüleri diziye attık

s=str.Split(boluculer);

IndexOf

 

Bir stringin başka bir string içersinde geçip geçmediğini bulmak için bu metod kullanılır. Bu fonksiyon String'in içerisinde aratacağınız harf yada kelimenin başlangıç noktasını verir.Kullanım şekilleri şöyledir.

 

IndexOf(Aranan_Kelime)

 

string Metin = "seni tanımayan yok bu şehirde";

int i = Metin.IndexOf("yok");

MessageBox.Show(i.ToString()); àcevap 15 olacaktır.

 

IndexOf(Aranan_Kelime, kaçıncı _harften)

 

Yukarıdaki örnekte biz i harfini aratırsak ilk i harfini 3.indexte bulur. İkinci i harfini bulmak için aramayı 4.indexten başlatmak gerekir.Yani;

 

string Metin = "seni tanımayan yok bu şehirde";

int i = Metin.IndexOf("i",4);

MessageBox.Show(i.ToString()); àsonuc 25 çıkar..

 

Üçüncü kullanım şekli ise bir parametre daha ekleyip aramayı kaç harf boyunca yapacağımızı belirleriz.

 

IndexOf(Aranan_Kelime, kaçıncı _harften, Kaç_harf)

 

LastIndexOf

Bu metod ise aramayı sondan başlatır.

 

 

IndexOfAny

String'in içerisinde, vereceğiniz bir char dizesinin içeriğindeki herhangi bir harfin olup olmadığını kontrol eder, eğer varsa size harfin başlangıç noktasını Integer olarak verir. Parametreleri IndexOf fonksiyonu ile aynıdır. Sadece fonksiyonun geri dödürdüğü değer pozitif(+1) yada negatif(-1) olabilir; sonuç pozitifse aranılan harf String içerisinde bulundu, negatif ise bulunamadı demektir. Bunu bir String'in içerisinde istemediğiniz harfleri bulmak için kullanabilirsiniz.

string Metin = "seni tanımayan yok bu şehirde";

char[] arananlar = {'t', 'y', 'd'};

int i = Metin. IndexOfAny (arananlar);

 

Sonuc 5 döner.LastIndexOfAny ise aramaya sondan başlar.

String Birleştirme:

Concat

Concat metodu iki veya daha fazla stringi birleştirmek için kullanılır.

 

Str3=String.Concat(str1,str2); -àbu şekilde kullanılır.

Concat etodunun yaptığı işi + operatörü de yapar.

 

Str3=str1 + str2 gibi.

 

Join

Bir grup stringin arasına bir karakter koyarak birleştirmek için bu metod kullanılır.

 

Join(Birleştirici_String , String_Dizisi)

 

Örneğin bir grup ismi arasına virgül koyarak birleştirelim.

 

string [] isimler = {"Mehmet","Murat","Tuba","Neriman","Hakkı"}; MessageBox.Show(string.Join(",", isimler));

 

àsonuç; Mehmet, Murat, Tuba, Neriman, Hakkı olacaktır.

 

Insert

Bir stringin içine başka bir string eklemek için bu metod kullanılır.

Insert(Kaçıncı_Harften, str2)

 

Str2 yi stringin içine belirtilen harften itibaren ekler.

 

Strin Değiştirme ve Silme:

Replace

Bir stringin içinde geçen metni başka bir metinle değiştirmek için bu metod kullanılır. Kullanım şekli aşşagıdaki gibidir.

 

Replace(Aranan_Metin, Yerine_Yazılacak_Metin)


Basit bir örnekle yolumuza devam edelim sevgili dostlar.

string Metin = "geçti dost kervanı eyleme beni"; MessageBox.Show(Metin.Replace("dost", "yazılım"));

àMesajBox bize "geçti yazılım kervanı eyleme beni" stringini döndürecektir.Görüldüğü gibi dost ve yazılım kelimeleri yer değştirmiştir.

 

Remove

 

Bir stringin içinden belli bir bölümü silmek için bu metod kullanılır.

 

Remove(Kaçıncı_Harften, Kaç_Tane)

 

string Metin = "geçti dost kervanı eyleme beni"; MessageBox.Show(Metin.Romove (6,4));

àSonuç geçti kervanı eyleme beni dir.

String Formatlama:

PadRight

Stringi belirli adete tamamlamak için bu iki metod kullanılır.

 

PadRight(adet ,Karakter) -à stringi adet uzunluğuna tamamlamak için stringin arkasına belirlediğiniz karakterleri ekler.

 

string str;

str = "Mehmet";

MessageBox.Show(str.PadRight(10,'*')); //sonuç “Mehmet****”

 

  • Padright metodunu eşit uzunlukta olmasını istediğiniz stringleri birleştirmek için kullanabilirsiniz.

 

 

PadLeft

stringi adet uzunluğuna tamamlamak için stringin önüne belirlediğiniz karakterleri ekler.

 

string str;

str = "Mehmet";

MessageBox.Show(str.PadRight(10,'*')); //sonuç “****Mehmet”

 

  • PadLeft metodunu TextAlign özelliği olmayan yerlerde sayıları sağa yanaşıkyazmak içinde kullanabiliriz.

 

Evet sevgili yazılımcı dostlarım geldik makalemizin sonuna,string metodlarının çok önemli olduğunu tekrar hatırlatarak makaleme son vermek istiyorum.Hepinize iyi çalışmalar..

 

 

 

 

 

Yorum Yaz
Arkadaşların Burada !
Arkadaşların Burada !