String Tokenizer ( Dizgi Parçalayıcı )
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 ("%s\n",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
« Sallayıcı Sıralaması (Shaker Sort) | Birliktelik, Münasebet ve Oluşum (Association, Aggregation and Composition) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'String Tokenizer ( Dizgi Parçalayıcı )' isimli yazı 20 Dec 2008 tarihinde, saat: 01:29 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 992 defa okunmuştur.
Benzer yazıları C/C++, JAVA, veri yapıları kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Sıralama işleminiz poligonu...
- Şadi Evren ŞEKER: bahsettiğiniz sıralama algoritması...
- Abdurrahman ulusoy: merhaba hocam. gelişigüzel...
- Oguz Okutan: Merhaba hocam.. Fonksiyonlarda degere göre...
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
Yakın Yazılar
String Tokenizer ( Dizgi Parçalayıcı )
Veritabanı Dizgi İşlemleri (string manipulations on Database)
Dizgi Eş Şekilliliği (String Homomorphism)
strcpy (String Copy, Dizgi Kopyalama)
atoi (ASCII to Integer, ASCII kodun tam sayısı)
Hamming Mesafesi (Hamming Distance)
Dizgi Karşılaştırma (String Comparison)
Yahut Şifrelemesi (XOR Encryption)
Nesne serileme ve dizme (Object Serialization , Marshalling)
Tip İnkılabı (Tip Dönüştürme, Type Casting)
Definite Clause Grammer (Belirli Cümle Dilbilgisi DCG)
Değişken Tip Bağlama (Dynamic Type Binding, Müteharrik Şekil Bağı)
Özyineli Sayılabilir Diller (Recursively Enumerable Languages)
Bağlantılar