Menu
CoddyTech

Dize Ayrıştırıcısı

Coddy'nin Java Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 48 / 59.

StringTokenizer, bir dizeyi bir sınırlayıcıya göre belirteçlere (daha küçük parçalara) ayırmak için kullanılır. Varsayılan olarak, sınırlayıcı olarak boşluk karakterlerini kullanır.

Varsayılan ayırıcıyla (boşluk) bir StringTokenizer oluşturun:

StringTokenizer st = new StringTokenizer("Hello World Java");

Başka bir karaktere göre bölmek için, bu karakteri ikinci bağımsız değişken olarak verin. Bu dizgedeki her karakter kendi başına bir ayırıcıdır:

StringTokenizer st = new StringTokenizer("one,two;three", ",;");
System.out.println(st.countTokens());  // Yazdırır: 3

Tokenları say ve al:

int count = st.countTokens();
// Token sayısını alır
String first = st.nextToken();
// Sonraki token'ı alır

Yukarıdaki kodu çalıştırdıktan sonra değişkenler şunları içerir:

count: 3
first: "Hello"

Önemli: Belirteçler tüketilir!

nextToken() çağrıldığında, belirteçleyiciden bu belirteci kaldırır. countTokens() yöntemi, kalan belirteçlerin sayısını döndürür.

StringTokenizer st = new StringTokenizer("Hello World Java");
System.out.println(st.countTokens());  // Yazdırır: 3

st.nextToken();  // "Hello" değerini tüketir
System.out.println(st.countTokens());  // Yazdırır: 2 (3 değil!)

st.nextToken();  // "World" değerini tüketir
System.out.println(st.countTokens());  // Yazdırır: 1

İpucu: Toplam belirteç sayısını bilmeniz gerekiyorsa, herhangi bir belirteci tüketmeden önce countTokens() çağrısını yapın. Yineleme sırasında kullanılabilir başka belirteç olup olmadığını kontrol etmek için hasMoreTokens() kullanın.

challenge icon

Görev

Kolay

tokenizeText adlı, iki argüman alan bir yöntem oluştur:

  1. Token'lara ayrılacak bir String (text)
  2. Ayırmak için kullanılacak bir String (delimiter)

Yöntem şunları yapmalıdır:

  1. Verilen metin ve ayırıcıyla bir StringTokenizer oluştur
  2. Token sayısını ve ardından her token'ı yeni bir satırda içeren bir dize döndür

Döndürülecek mesajlar şöyle olmalıdır:

  • text null ise: "Invalid text" döndür
  • delimiter null ise: ayırıcı olarak boşluk kullan
  • Biçim: "Token count: X\nToken: token1\nToken: token2\n..."

Kendin dene

import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    public static String tokenizeText(String text, String delimiter) {
        // Kodunuzu buraya yazın
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        String delimiter = scanner.nextLine();
        
        if (text.equals("null")) text = null;
        if (delimiter.equals("null")) delimiter = null;
        
        System.out.println(tokenizeText(text, delimiter));
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Java derleyicisi