Merhabalar.

String metodlarımızdan biri olan splitMapJoin metodunu ayrı bir konu olarak ele almak istedik.

Bu metod bir string ifadeyi bölmek, parçasını dönüştürmek ve parçaları yeniden yeni bir string ifade olarak birleştirmek için kullanılır.

Yapısı

 String splitMapJoin (Pattern pattern,{String onMatch(Match m),String onNonMatch(String s)});

Böyle bakınca hemen anlaşılması zor gibi duruyor ama hiç zor değil. Şimdi bir örnek üzerinde görünce daha iyi anlayacağız.

Burada desen, dizenin nasıl bölüneceğini tanımlamak için kullanılır.

onMatch, eşleşen parçaları bir dizeye dönüştürecektir. Onu kaldırırsak, eşleşen dizge varsayılan olarak kullanılır.

onNonMatch eşleşmeyen kısmı değiştirmek için kullanılır. Bunu kaldırırsak, eşleşmeyen dizge varsayılan olarak kullanılır.

Mesela elimizde Kredi Kart numaramız olan bir string ifade var. Ve benim istediğim kart numarasının * ile maskelenmesi.

İşte böyle bir işlemi yapmak istediğimde splitjoinmap imdadıma yetişiyor.

Elimdeki string veri şöyle : Kart Numaranız: 1234 4534 5665 6565

Şeklinde şimdi burada kısaca bir algoritma düşünmem gerekirse şunu diyebilirim. Pattern’imi eğer 0 ve 9 arasındaki tüm rakamlar olarak belirlersem. Eşleşme anında ifade yerine * yazmasını isteyeceğim.

void main() {
  String cardNumber = "Kart Numaranız : 1234 5464 6456 6454 6453";

  String maskCardNumber =
      cardNumber.splitMapJoin(
          (new RegExp(r"[0-9]")),
          onMatch: (m) => "*");

  print(cardNumber);
  print(maskCardNumber);
}

Burada olayı daha iyi anlamak için * işareti yerine abc yazınız.

void main() {
  String cardNumber = "Kart Numaranız : 1234 5464 6456 6454 6453";

  String maskCardNumber =
      cardNumber.splitMapJoin(
          (new RegExp(r"[0-9]")),
          onMatch: (m) => "*");

  maskCardNumber =
  cardNumber.splitMapJoin(
      (new RegExp(r"[0-9]")),
      onMatch: (m) => "abc");

  print(cardNumber);
  print(maskCardNumber);
}

Şimdi eşleşmeyen kısımlar için de istiyorum ki bütün harfleri büyük olsun.

void main() {
  String cardNumber = "Kart Numaranız : 1234 5464 6456 6454 6453";

  String maskCardNumber =
      cardNumber.splitMapJoin(
          (new RegExp(r"[0-9]")),
          onMatch: (m) => "*");

  maskCardNumber =
  cardNumber.splitMapJoin(
      (new RegExp(r"[0-9]")),
      onMatch: (m) => "abc");

  maskCardNumber =
      cardNumber.splitMapJoin(
          (new RegExp(r"[0-9]")),
          onMatch: (m) => "*",
        onNonMatch: (m) => m.toUpperCase()
      );

  print(cardNumber);
  print(maskCardNumber);
}

Kullanımı aslında bu kadar basit.

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.