Yazan : Şadi Evren ŞEKER
Bilgisayar bilimlerinde sık kullanılan veri tiplerinden birisi de dizgilerdir (Strings). Bu veri tipinde herhangi bir yazı durabilir. Genellikle verinin bir parçasını elde etmek için dizgi içerisinden bir parça çıkarılması gerekir. Bu işlem için dizginin (string) parçalanması gerektiğinde yapılan işleme parçalama (Tokenize) ismi verilir.
Örneğin çok sık kullanılan virgül ayırmalı veri (Comma seperated values) yapısındaki bir dosyayı ele alalım:
isim,telefon,dogum
ali,123,1970
veli,321,1980
ahmet,333,1981
Yukarıdaki bu dosyayı okuyarak sırasıyla verileri işlememiz gerekirse yapılacak işlem dosyadan satır satır verileri okumak ve “,” karakterinden okunan dizgileri bölmek gerekir.
Bu işlem için örneğin C dilinde bir karakter dizisine okumak ve dizinin her elemanı üzerinden bir döngü ile geçerek , karakteri görünce bölme işlemini tamamlamak gerekir.
Bu işlemi yapan strtok isimli bir fonksiyon string.h dosyasında bulunmaktadır. Aşağıdaki şekilde kullanılabilir:
/* strtok ornegi */ #include <stdio.h> #include <string.h> int main () { char str[] ="- Bu, ornek bir dizgidir."; char * pch; printf ("Girilen "%s" mesajini parcaliyoruz:n",str); pch = strtok (str," ,.-"); // parcalama icin kullanilan ayırıcılar (delimiters) while (pch != NULL) { printf ("%sn",pch); pch = strtok (NULL, " ,.-"); } return 0; }
Yukarıdaki programın sonucu aşağıda verilmiştir:
Girilen "Bu, ornek bir dizgidir." mesajini parcaliyoruz: Bu ornek bir dizgidir
Yukarıda görüldüğü üzere ,.- karakterlerinden parçalanmıştır. Benzer bir hazır fonksiyonda JAVA dilinde bulunmaktadır. StringTokenizer isimli fonksiyonun kullanımı aşağıda verilmiştir:
StringTokenizer st = new StringTokenizer("Bu, ornek bir dizgidir"," ,."); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }
Yukarıdaki kodda da aynı dizgi aynı ayıraçlarla (Deliminator) verilmiştir ve çıktısı aşağıdaki şekildedir:
Bu ornek bir dizgidir