Thursday, September 30, 2010

java.util.StringTokenizer

Java nın 3000 e yakın hazır sınıfından bir tanesi de StringTokenizer sınıfıdır. Bugün StringTokenizer sınıfının kullanımı ve bu sınıfa ait metodların ne işe yaradığını anlatmaya çalışacağım. StringTokenizer sınıfı herhangi bir metni belirlediğimiz herhangi bir kritere veya kriterlere göre parçalamak (parse etmek ,parsing) için kullanılır. Eğer herhangi bir kriter koymazsak bu durumda default olarak boşluk karakterine göre parçalama işlemi gerçekleştirilir ki bu işleme splitting denir.Parçalama işleminden sonra oluşan her bir parçaya Token denir.
Programming is Practise felsefesinden yola çıkarak bu sınıfın kullanımını kolayca anlayabileceğimiz basit bir program yazarak işe başlayalım.01 import java.util.StringTokenizer;

public class Practise { 
    public static void main(String[] args) {  
             String cumle1=”deniz gözlerinden alır sonsuzluğun haberini”;
             StringTokenizer st1 = new StringTokenizer(cumle1);
  
              while(st1.hasMoreTokens())
                   System.out.println(st1.nextToken());
               
               // 1.bölüm sonu
              String cumle2=”ben,sen,o,biz,,,siz”;
              StringTokenizer st2= new StringTokenizer(cumle2,”,”);
              while(st2.hasMoreTokens())
                     System.out.println(st2.nextToken());
         
             // 2.bölüm sonu
             String cumle3=”yıldızlara;uzanıp,hep-seni sordum?gece!yarılarında. ”
             String delims =”,;-!.”;
             StringTokenizer st3= new StringTokenizer(cumle3, delims);
             System.out.println(“\n Token sayısı=”+st3.countTokens());
 
            while (st3.hasMoreElements())
                   System.out.println(st3.nextToken());
            // 3.bölüm sonu
       }
  }


Programı bölüm bölüm inceleyecek olursak, ilk bölümde cumle1 stringini nasıl token lara ayırabileceğimizi görüyoruz.StringTokenizer tipinde bir st nesnesi oluşturuyoruz. Constructor parametre olarak sadece cumle1 stringini aldığından default olarak splitting işlemi yapacaktır yani boşluk karakterlerine göre token lara ayırma işlemi. Buna göre ilk bölümün çıktısı şu şekilde olmalıdır.

deniz
gözlerinden
alır
sonsuzluğun
haberini


İkinci bölümde, string içine bir kaç virgül ekleyerek oluşturduğumuz st2 nesnesinin yapıcısına cumle2 ve “,” stringlerini parametre olarak gönderiyoruz. Yapıcıya 2.parametre olarak gönderilen bu karaktere sınırlayıcı karakter (delimiter) adı verilir. Bu durumda cumle2 stringi “,” karakterinin görüldüğü her yerde token lara ayrılır. Çıktı şu şekilde olmalıdır.

ben
sen
o
biz
siz


Üçüncü bölümde, birden çok delimiter kullanılmak istenmiş ve bunlar karakter dizisi şeklinde bildirilmiştir.
StringTokenizer st3= new StringTokenizer(cumle3, delims); -kod satırının anlamı cumle3 stringini delims içindeki karakterlere göre token lara parçala- manasına gelmektedir.StringTokenizer oluşturduğu token ları bir dizi olarak değil ancak sırayla erişilebilecek bir enumaration type olarak döndürür. 3.bölümün çıktısı da aşağıdaki gibi olur.

Token sayısı=6
yıldızlara
uzanıp
hep
seni sordum?gece
yarılarında


Dikat edilirse, delims içinde boşluk karakteri ve “?” bulunmadığından dolayı
’seni sordum?gece’ tokenlara ayrılmamıştır.

hasMoreTokens(); boolean değer döndüren bir metoddur sırada token olup olmadığını kontrol eder
nextToken(); sıradaki token i döndürür
countTokens(); o anda kalan token sayısını verir.

Daha ayrıntılı bilgiler;
java-sun.com

Bu yazi asagidaki bloktan kopyalanmistir Levent Ozkan Hocamin elerine saglik 
http://www.leventozkan.com/?p=6

2 comments: