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() للتحقق مما إذا كان هناك المزيد من الرموز المتاحة أثناء التكرار.
التحدي
سهلقم بإنشاء طريقة (method) تسمى tokenizeText تأخذ وسيطين:
- سلسلة نصية (
text) لتقسيمها - سلسلة نصية (
delimiter) للفصل بها
يجب أن تقوم الطريقة بما يلي:
- إنشاء StringTokenizer باستخدام النص والمحدد (delimiter) المعطيين
- إرجاع سلسلة نصية تحتوي على عدد الرموز (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));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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مطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم