C# Basic String Operations (Karakter Dizisi işlemleri)

Merhaba arkadaşlar,

Bir önceki yazımda Temel I/O işlemlerini ele aldık. Kısaca I/O girdi/çıktı anlamına gelmektedir ve C# programlama dilinde akımlar (stream) bu yapının üzerine kuruludur. Akımlar bir bilgiyi girdi/çıktı sistemlerinden byte düzeyinde okuyabilen soyut birimlerdir. C# Basic I/O Operations (Temel I/O İşlemleri) yazıma buradan ulaşabilirsiniz.

Bu yazımda çok sıklıkla kullandığımız karakter dizilerle ilgili işlemleri yönetmek için C# programlama dilinde temel veri türü olarak adlandırdığımız string’i ele alacağız.

Bu yazıda bahsedilecek konular

  • String Tanımlama
  • String Metotları
  • Arama İşlemleri
  • Budama ve Doldurma İşlemleri
  • Split() ve Join() Metotları
  • Diğer String İşlemleri
  • Yazıları Biçimlendirme
    • String.Format() ve ToString() Metotları Biçimlendirme
    • Tarih ve Saat Biçimlendirme
    • $ – string interpolation
    • Özel Biçimlendirme Oluşturma

C# programlama dilinde string işlemlerinin tamamı System.String isim alanında bulunmaktadır. Bir string nesnesi tamamlandıktan sonra string’te bulunan her hangi bir karakter değiştirilemez. Ancak string üzerinde çeşitli metotlarla işlem yapılarak metotların geri dönüş değeri ile yeni bir string nesnesine aktarabiliriz. Buradan yola çıkarak string nesnesinde bulunan her bir karakter readonly özelliğine sahip olur diyebiliriz.

String nesnesi ile bir karakter dizisi şeklinde işlem yapabiliriz. Bunu String nesnesinin özelliği olan indekser ile yapabiliriz. Yukarıdaki örnek hata verecektir. Çünkü String nesnesinin indekser özelliği get bloğunun tanımlı olmasıdır.

String Tanımlama

String nesnesini oluşturmanın birden çok yolu vardır.

String Metotları

String nesnesi üzerinde çalışan birden çok metotlar vardır. Bu metotların hepsini ezberlemek zordur. Ama en çok işimize yarayacak olanlara bakalım.

String.Concat()

Bu metot ile bir string değerinin sonuna başka bir string değeri eklemek için kullanılır. Bu sınıf statik özelliğe sahiptir

String.Compare()

İki string nesnesini karakter düzeyinde karşılaştırmak için kullanılır.

Arama İşlemleri

String nesnesi üzerinde bir karakteri arayabileceğimiz gibi alt karakter dizisi de arayabiliriz.

IndexOf()

Bu metot ile string nesnesi üzerinde bulunan karakterin ilk bulunduğu yerin indeksini döner. Arama işlemi başarısızsa -1 değerini döner.

LastIndexOf()

Bu metot ile aranacak olan karakterin aranacak yazı içinde en son nerede bulunduğunu döner. Arama işlemi başarısızsa -1 değerini döner.

IndexOfAny() ve LastIndexOfAny()

Bu iki metot sayesinde bir karakter dizisinin herhangi bir elemanın ilk bulunduğu yerin indeks bilgisi döner. Diğer metotlarda olduğu gibi karakter bulunmaz ise -1 değerini döner.

StartsWith() ve EndsWith()

Bu iki metot sayesinde string nesnesinin başı ve sonunun hangi karakter dizi ise bittiğini öğrenebiliriz.

Budama ve Doldurma İşlemleri

String nesneleri üzerinde sonundaki ve başındaki boşluk karakterleri silmek isteyebiliriz. Özellikle üye girişi gerektiren sistemlerde kullanıcının kullanıcı-adı okurken yanlışlıkla başında ve sonundaki yazılmış boşluk karakterlerini sileriz.

Trim()

Bu metot sayesinde string değerinin başında ve sonundaki boşlukları sileriz.

Trim(param char[] trimChars)

Bu metot sayesinde gönderilen dizideki karakterler string değerinin başında veya sonunda varsa string nesnesinden karakterler silinir.

PadLeft() ve PadRight()

Bu iki metot sayesinde string değerinin sağına ve soluna yeni karakterler eklenir.

Split() ve Join()

String nesnesi üzerinde düzenli devam eden karakterleri bölerek yeni bir string dizisine aktarmak için Split() metodu kullanılır.

Join metodu ile Split metodunun tam tersi işlem yapılır. Karakter ayracına bağlı olarak string değerlerini birleştirir.

Diğer String İşlemleri

Yazıları Biçimlendirme

Yazıları biçimli bir şekilde ekrana ya da herhangi bir akıma yazdırabiliriz. Bu biçimlendirmeyi yapabilmemiz için de ilgili metodun biçimlendirmeyi destekliyor olması gerekir. Console.WriteLine(), String.Format() metotları biçimlendirmeyi destekliyen metotlardır.

Format işlemi {değişken_no, genişlik : format} komutunu kullanarak biçimlendirme yapabiliriz. genişlik ve format belirtilmediğinde varsayılan değerleri alır.

Burada bilmemiz gereken eğer genişlik 0’dan büyük ise yazılar sağa dayalı eğer 0’dan küçük ise yazılar sola dayalı bir şekilde yazılır.

Bir değeri 16’lık sayı tabanında yazmak için

Her format belirleyicisinin duyarlılık ifadese vardır. Bu ifadeler format belirtecinden hemen sonra yazılır. Yukarıdaki örnekte “X” belirteci için duyarlılık maksimum sayıda karakter anlamına gelmektedir.

En sık kullanılan format belirleyicileri ve duyarlılıkları

BelirleyiciAçıklamaDuyarlılık Anlamı
C/cPara birimiOndalık basamakların sayısını verir
D/dTamsayı verisiEn az basamak sayısını belirtir, gerektiğinde boş olan basamaklar sıfır olarak beslenir
E/eBilimsel NotasyonOndalık basamak sayısını verir
F/fGerçek sayılar (float)Ondalık basamak sayısını verir
G/gE ve F BiçimlerindenOndalık basamak sayısını verir. Hangisi kısa ise o kullanılır
N/nVirgül KullanarakOndalık basamak sayısını verir. Gerçek sayıları yazar
P/pYüzdeOndalık basamak sayısını verir
R/rStringe dönüşen türün tekrar eski değerine geri dönmesini sağlayabilecek biçimYok
X/xOnaltılık sayı sisteminde yazarEn az basamak sayısını belirtir, gerektiğinde boş olan basamaklar beslenir

Bu biçimlendirmelerin sonucunu görebilmek için örnek uygulama yapalım

String.Format() Biçimlendirme

String sınıfının Format metodu tıpkı Console sınıfının WriteLine() metodu gibi çalışır. Aralarındaki tek fark biri ekrana yazdırırken diğer yeni bir string nesnesine aktarır.

String.Format() metodu için bir örnek

ToString() Biçimlendirme

ToString() metoduna biçimlendirme parametre şeklinde girilir. Bir önceki örneği aşağıdaki gibi yapabiliriz.

$ – string interpolation

C# 6.0 ile birlikte C# programlama diline katılan string interpolation sayesinde biçimlendirmeyi daha kolay ve kullanışlı yapıyoruz. Benim de örnekleri uygularken ekrana yazdırırken sıklıkla kullandığım biçimlendirme tekniğidir. Şimdi yukarıda yaptığımız bazı özellikleri string interpolation ile yapalım

Tarih ve Saat Biçimlendirme

Tarih ve saat işlemlerini DateTime yapısı ile gerçekleştirebiliyorduk. Bu yapıyı aslında sıklıkla biçimlendiririz.

Bu biçimlendirmeler için örnek bir uygulama

Özel Biçimlendirme Oluşturma

Önceden belirlediğimiz özel karakterlerle kendi biçimlerimizi oluşturabiliriz.

  • # –> Rakam değerleri için kullanılır
  • , –> Büyük sayılarda binlikleri ayırmak için kullanılır
  • . –> Gerçek sayılarda ondalık kısımları ayırır
  • 0 -> Yazılıcak değerin başına ya da sonuna 0 karakteri ekler
  • % –> Yüzde ifadelerini belirlemek için kullanılır
  • E0, e0, E+0, e+0, E-0, e-0 –> Yazıları bilimsel notasyonda yazmaj için kullanılır

Kendi biçimlerimizi oluşturacak örnek bir uygulama

Bu yazımda C# programlama dilinde Karakter Dizisi işlemleri hakkında elde ettiğim bilgileri paylaşmaya çalıştım. Umarım faydalı olmuştur

Bir sonraki yazımda görüşmek üzere 🙂

Kaynaklar:

Her Yönüyle C# 7.0, Sefer Algan, Pusula Yayincilik

https://docs.microsoft.com/tr-tr/dotnet/api/system.io?view=netframework-4.8

Leave a Comment