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

String Tokenizer

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

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

أنشئ StringTokenizer بالمحدد الافتراضي (مسافة):

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

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

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

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

count: 3
first: "Hello"

عندما تستدعي nextToken()، فإنه يزيل ذلك الرمز من المحلل (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

التحدي

سهل

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

  1. سلسلة نصية (text) لتقسيمها إلى رموز
  2. سلسلة نصية (delimiter) للتقسيم بواسطتها

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

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

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

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

ورقة مرجعية

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

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

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

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

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

إنشاء StringTokenizer بمحدد مخصص:

StringTokenizer st = new StringTokenizer(text, delimiter);

عند استدعاء nextToken()، فإنه يزيل ذلك الرمز من الـ 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

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

جرّب بنفسك

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