Merhabalar.

Dart konularımızda artık büyük konularımıza doğru adım adım ilerliyoruz.

Bu yazımda string değerler üzerine manipulasyonlar yapabilmemizi sağlayan metodlarına göz atacağız.

String Tanımlamalar İle Başlayalım

Bir string değişkene değerler tek tırnaklar ve ya çift tırnaklar arasında yazılabiliyordu.

void main(){

  String s1 = "Murat Bilginer";
  String s2 = 'Murat Bilginer';



}

Kaçış Karakteri \

Bir string ifade içinde ayrıca bir tek tırnak ile ayırma işlemi gerekirse, burada \ kaçış karakterini kullanmamız gerekir. Yoksa editör kullandığımız tırnak işaretini bitirme tırnağı olarak algılar ve kodumuz hata verecektir.

Bu işlemi değeri tek tırnaklar arasında yazarken gereksinim duyarız.

s1 = 'Murat Bilginer\'in Dart Eğitimleri';

Çift tırnak ile yazsaydık böyle bir işleme gereksinim duymazdık.

s1 = "Murat Bilginer'in Dart Eğitimleri";

Eğer string içindeki değerin aynen yazılmasını istiyorsak bunun için Raw String kavramını kullanırız.

Bunun içinde string ifadenin başına r harfi koyarız.

Bu kodun çıktısı ne yazdıysak o şekilde olacaktır. \n de gözükecektir.

s1 = r'Murat Bilginer\n Dart Eğitimleri';
  print(s1);

Bir string ifadedeyi yazarken alt satıra geçmek için \n karakterini kullanırız.

print("Murat Bilginer'in \n Dart Eğitimleri");

Alt satıra geçerek ifade yazabilmek için ayrıca “”” “”” 3 tırnak kullanılabilir.

print("""Murat Bilginer'in
  Dart Eğitimleri""");

String Değerler Dizidir

String tanımlama yapılmış her bir değişken aynı zamanda bir liste ya da dizidir. Her karaterine ayrı ayrı ulaşılabilir.

Dizilerin saymaya sıfırdan başladığını unutmayınız.

Yani c değişkeninin ilk değerine ulaşabilmek için 0. indisine bakmamız gerekir.

Değişken_İsmi[indis_değeri] şeklinde ulaşılabilir.

string c = "Murat Bilginer";
  print(c[0].toString());
  print(c[3].toString());
  print(c[6].toString());

Length Özelliği

Bir string ifadenin kaç karakterden oluştuğunu bulmak için kullanılır.

print(c.length);

Substring Metodu

String bir değişkenin istediğimiz bir bölümünü alıp kullanabiliriz. Bunun için substring metodu işimize yarayacaktır.

String substring(int startIndex, [int endIndex]);
  String d = "Brainy Tech";
  
  print(d.substring(0,4));
  print(d.substring(2,5));
  print(d.substring(3));

Burada dikkat edilmesi gereken konu şudur. İlk değer başlangıç indisini belirtir. 2. Değer ise gidilecek olan indis değerini gösterir. Ancak o indir değeri alınmaz. Yani 0 indisinden başlayıp 4. indise kadar ald dediğimizde 4. indis dahil değildir.

O yüzden 0 1 2 3. indislerdeki değerler alınır. Ekrana Brai yazılacaktır.

Son kodda yapılan işlem ise bir son verilmediği için başlangıç indisinden itibaren sonuna kadar al anlamına gelir. O yüzden iyn Tech sonucu gelmiştir.

Substring sıkça kullandığımız önemli bir metoddur.

Indexof Metodu

Bu metod bir string içinde arama işlemi yapar. Ve aranan ifadeyi ilk bulduğu yerin indisini geri döner.

 String e = 'Brainy Tech';
  print(e.indexOf('e'));
  print(e.indexOf('iny'));
  print(e.indexOf(r'y.'));
  print(e.indexOf('code'));

LastIndexof Metodu

Bu metod da arama için kullanılır. Ancak bu en son bulduğu değerin indisini geriye döner.

Örneğin Murat Bilginer içindeki i harfini last index of metodu ile arasam bana ilk i değerin indisini değil son i değerinin indisini dönecektir.

String f = "Murat Bilginer";
  print(f.lastIndexOf("i"));

ToLowerCase() Metodu

Bu bir string değerin tüm harflerini küçük harf haline getir.

ToUpperCase() Metodu

Bu bir string değerin tüm harflerini büyük harf haline getirir.

 String g = "MURAT BİLGİNER";
  String h = "murat bilginer";
  
  print(g.toLowerCase());
  print(h.toUpperCase());

Empty Kontrolü

Bir string değerinin içi boş mu dolu mu kontrolünü isEmpty ve ya isNotEmpty metodları ile yapabiliriz.

Not: Null değer kontrolü değildir. Unutulmamalıdır. Bu yöntemlerle değeri null olan bir değişkene işlem yaparsanız hata alırsınız.

Bu metodlar geriye true ya da false değerler döner.

String j = " ";
  String k = "Braiy Tech";
  
  bool status;
  
  status = j.isEmpty;
  print(status);
  status = k.isNotEmpty;
  print(status);

Contains Metodu

Bu metod bir string içinde aranan değer var mı yok mu kontrolü yapar. Geriye true ya da false değer döner.

Kullanımı

 String l = "Brainy Tech";


  l.contains('k');
  l.contains("B");
  l.contains(RegExp(r'[a-c]'));    
  
  l.contains('h', 3);              
  l.contains(RegExp(r'[a-c]'), 1); 
  l.contains(RegExp(r'[a-d]'), 1); 

İlk kullanımlar standart kullanımdır.

RegExp ile yapılan arama bir pattern aramasıdır.

a dan c’ye kadar olan harfleri sorgular.

Contains’i istersek istediğimiz indisten başlayarak aratabiliriz.

Örneğin 1. indisten başlasın aramaya dersek daha öncesine bakmayacaktır.

l.contains('h', 3);   

Burada 3. indisten itibaren arama yapılmıştır.

Startswith ve Endswith Metodları

Bir stringin başlangıcından veya sonunda değer ya da değerlar sorgulayabiliriz var mı diye.

Eğer var ise true yok ise false dönecektir geriye.

String t = "Brainy Tech";
  
  print(t.startsWith("B"));
  print(t.startsWith("C"));
  print(t.startsWith("Bra"));
  print(t.startsWith("Bran"));
  
  print(t.endsWith("h"));
  print(t.endsWith("y"));
  print(t.endsWith("ech"));
  print(t.endsWith("kech"));

Join and Split Metodları

String ifadeler bir kaç şekilde birleştirilebilirler.

  String ab = "Murat";
  String bc = "Bilginer";

  print(ab +  bc);
  print(ab + " " + cb);
  print("$ab $bc");

Bir ifade * işlemi ile art arda çarpıldığı değer kadar yazdırılabilir.

String ab = "Murat";
  print(ab * 3);

Split Metodu

Bir string ifadeyi istediğimiz karakter ya da patterne göre bölmek isteyebiliriz. Bunun için split metodunu kullanırız.

Split metodu sonuç olarak geriye bir string dizi dönecektir.

Aşağıdaki ifadeyi . karakterine göre bölmek istiyorum. Bunun anlamı şudur. İfade her nokta gördüğünde öncesindeki değeri diziye atar. . değeri eklenmez.

String site = "muratbilginer.com.tr";
  print(site.split("."));

Gelen bu değeri bir string diziye atıp istediğimiz gibi kullanabiliriz. Ancak biz şu anda dizileri görmedik. Bunu ileriye bırakıyoruz.

Eğer string bir ifadenin tüm karakterlerini ayrı ayrı almak istersek şunu yapmak yeterli olacaktır.

String site = "muratbilginer.com.tr";
  print(site.split("."));

  print(site.split("")); // Bu kod

Bir pattern’e göre bölmek isteyebiliriz.

site = "muratbilginer054.com.tr";
  print(site.split(RegExp(r"[0-9]+")));

padLeft() Metodu

String bir değere padleft uygulanırsa verilen minimum genişlikte sağa yaslanmış bir String döndürür. Genişlik dizenin uzunluğundan küçükse veya ona eşitse, dolgu eklenmez. Eğer büyükse soluna dolgu eklenir.

padRight() Metodu

String bir değere padleft uygulanırsa verilen minimum genişlikte sola yaslanmış bir String döndürür. Genişlik Dizenin uzunluğundan küçükse veya ona eşitse, dolgu eklenmez. Eğer büyükse sağına dolgu eklenir.

String name = "Murat Bilginer";

  print(name.padLeft(10));
  print(name.padLeft(20));

  print(name.padRight(10));
  print(name.padRight(20) + "Bilginer");

Eğer boşlukları istediğimiz bir değerle doldurmak istersek aşağıdaki yöntem uygulanır.

  print(name.padLeft(20, "."));
  print(name.padRight(20, "."));

trimLeft()

Soldan boşluk karakterleri olmadan yeni String döndürür.

trimRight()

Sağdan boşluk karakterleri olmadan yeni String döndürür.

trim()

Başında veya sonunda herhangi bir boşluk karakteri olmadan yeni bir Dize döndürür.

  String i = "  Murat Bilginer   ";
  print(i.trimLeft());
  print(i.trimRight());
  print(i.trim());

Replace Metodları

String ifadeler içinde bazı karakterleri bulup onları başka değerlerle değiştirebiliriz. Bunu replace metodları yapabiliriz.

replaceFirst(bulunacakdeğer, yazılacakdeğer);

şeklinde çalışır. Baştan itibaren bulmayı istediğimiz değeri arar ve ilk bulduğu yerde yazılacak değerle değiştirir. Sonraki değerlere dokunmaz.

replaceFirst(bulunacakdeğer, yazılacakdeğer, başlanacakindis)

Bu yöntemlde başlanacak indis yerine hangi değer yazıldıysa aramaya oradan itibaren başlar. İlk bulduğu yerde değiştirir. Sonrakilere dokunmaz.

replaceFirst(RegExp(r”Değer”), yazılacakdeğer)

bu ifade ile baştan itibaren verilen pattern’i arar. Bulduğunda yerine değeri yazacaktır.

String r = "Murat Bilginer";

  print(r.replaceFirst("a", "innn"));
  print(r.replaceFirst("i", "arrrr",7));
  print(r.replaceFirst(RegExp(r"rat"), "ser"));

replaceFirstMapped(bulunacakdeğer, (m) => yapılacakişlem);

replaceFirstMapped(bulunacakdeğer, (m) => yapılacakişlem, başlanacakindis);

Bir string üzerinde mapped işlemi ile o değere ulaşıp o değere ne yapılacağına karar verebiliriz. Burada (m) ifadesi yerine istenilen değer yazılabilir. Eşleşme değerini ifade ediyor.

print(r.replaceFirstMapped("a", (m) => "b"));
  print(r.replaceFirstMapped("i", (m) => "b", 9));

Biz burada dedik ki, a değerini bul eğer bir eşleşme varsa o m olarak tutuldu. Sonra o eşleşmedeki değer yerine b yaz.

replaceAll(bulunacakdeğer, yazılacakdeğer)

Bu ifade string değer içinde bulunan tüm değerleri yazılacak değerle günceller.

replaceRange() Metodu

Bu metod ile bir stringin istediğimiz bölümüne istediğimiz değeri yazdırabiliriz.

replaceRange(başlangıçindisi, bitişindisi, yazılacakdeğer)

print(r.replaceRange(3, 5, "zbcdefg"));

Yapılan işlem 3. indisten itibaren 5. indiste dahil siliyor ve yerine yazmasını istediğimiz değeri yazıyor. Sonra diğer değerleri aynen koruyor. 6. indisten itibaren korudu.

Şimdilik işleyebileceğimiz string metodları bu şekilde.

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


What's Your Reaction?

hate hate
0
hate
fail fail
0
fail
fun fun
0
fun
geeky geeky
0
geeky
love love
0
love
lol lol
0
lol
omg omg
0
omg
win win
0
win
Murat Bilginer
21 Şubat 1992 Doğumlu. Endüstri Mühendisi olarak Lisansını 2016 yılında tamamlamıştır. Industryolog Akademi - NGenius oluşumlarının kurucusudur. Şu anda kendi şirketi Brainy Tech ile hem Yazılım Hizmetleri Sunmakta Hem de Online Eğitimler Vermektedir.