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() للتحقق مما إذا كان هناك المزيد من الرموز المتاحة أثناء التكرار.
التحدي
سهلقم بإنشاء طريقة تسمى tokenizeText تأخذ وسيطين:
- سلسلة نصية (
text) لتقسيمها إلى رموز - سلسلة نصية (
delimiter) للتقسيم بواسطتها
يجب أن تقوم الطريقة بـ:
- إنشاء
StringTokenizerباستخدام النص والمحدد المعطيين - إرجاع سلسلة نصية تحتوي على عدد الرموز متبوعاً بكل رمز في سطر جديد
يجب أن تكون رسائل الإرجاع:
- إذا كان النص 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));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap5HashSet الجزء الثاني
رياضيات - اتحاد الـ HashSetsرياضيات - تقاطع الـ HashSetرياضيات - فرق المجموعاترياضيات - الفرق المتناظرالمجموعات الجزئية والشاملةالتكرار عبر المجموعات8عمليات السلاسل النصية المتقدمة
أساسيات StringBuilderمقدمة إلى StringBufferأساسيات Regular Expressionsمطابقة الأنماط باستخدام RegexString Tokenizerتنسيق النصوص المتقدم3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم