Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

String Tokenizer

جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 48 من 59.

يُستخدم StringTokenizer لتقسيم سلسلة نصية إلى رموز (أجزاء أصغر) بناءً على محدد (delimiter). بشكل افتراضي، يستخدم المسافة البيضاء كمحدد.

قم بإنشاء StringTokenizer باستخدام المحدد الافتراضي (مسافة):

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

عدّ الرموز والحصول عليها:

int count = st.countTokens();
// الحصول على عدد الرموز
String first = st.nextToken();
// الحصول على الرمز التالي

بعد تنفيذ الكود أعلاه، تحتوي المتغيرات على:

count: 3
first: "Hello"

هام: يتم استهلاك الرموز المميزة!

عندما تستدعي nextToken()، فإنه يزيل ذلك الرمز (token) من المحلل (tokenizer). تقوم طريقة countTokens() بإرجاع عدد الرموز المتبقية.

StringTokenizer st = new StringTokenizer("Hello World Java");
System.out.println(st.countTokens());  // يطبع: 3

st.nextToken();  // يستهلك "Hello"
System.out.println(st.countTokens());  // يطبع: 2 (ليس 3!)

st.nextToken();  // يستهلك "World"
System.out.println(st.countTokens());  // يطبع: 1

نصيحة: إذا كنت بحاجة إلى معرفة إجمالي عدد الرموز (tokens)، فاستدعِ countTokens() قبل استهلاك أي رموز. استخدم hasMoreTokens() للتحقق مما إذا كان هناك المزيد من الرموز المتاحة أثناء التكرار.

challenge icon

التحدي

سهل

قم بإنشاء طريقة (method) تسمى tokenizeText تأخذ وسيطين:

  1. سلسلة نصية (text) لتقسيمها
  2. سلسلة نصية (delimiter) للفصل بها

يجب أن تقوم الطريقة بما يلي:

  1. إنشاء StringTokenizer باستخدام النص والمحدد (delimiter) المعطيين
  2. إرجاع سلسلة نصية تحتوي على عدد الرموز (tokens) متبوعاً بكل رمز في سطر جديد

يجب أن تكون رسائل الإرجاع:

  • إذا كان text هو null: قم بإرجاع "Invalid text"
  • إذا كان delimiter هو null: استخدم المسافة كمحدد
  • التنسيق: "Token count: X\nToken: token1\nToken: token2\n..."

جرّب بنفسك

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

public class Main {
    public static String tokenizeText(String text, String delimiter) {
        // اكتب كودك هنا
    }
    
    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 iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow