String Tokenizer
جزء من قسم المنطق وتدفق التنفيذ في رحلة Java على Coddy. الدرس 48 من 59.
يُستخدم StringTokenizer لتقسيم سلسلة نصية إلى رموز (أجزاء أصغر) بناءً على مُحدِّد. ويستخدم المسافات البيضاء مُحدِّدًا افتراضيًا.
أنشئ StringTokenizer باستخدام المحدِّد الافتراضي (المسافة):
StringTokenizer st = new StringTokenizer("Hello World Java");للتقسيم باستخدام محرف آخر، مرّره باعتباره الوسيط الثاني. كل محرف في هذه السلسلة هو فاصل مستقل:
StringTokenizer st = new StringTokenizer("one,two;three", ",;");
System.out.println(st.countTokens()); // يطبع: 3عدّ الرموز واحصل عليها:
int count = st.countTokens();
// يحصل على عدد الرموز
String first = st.nextToken();
// يحصل على الرمز التاليبعد تنفيذ الشيفرة أعلاه، تحتوي المتغيرات على:
count: 3
first: "Hello"مهم: يتم استهلاك الرموز!
عند استدعاء nextToken()، فإنه يزيل ذلك الرمز من أداة تقسيم الرموز. تُعيد الطريقة 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() للتحقق مما إذا كانت هناك رموز أخرى متاحة أثناء التكرار.
التحدي
سهلأنشئ طريقة باسم tokenizeText تأخذ وسيطين:
- قيمة من النوع String (
text) لتقسيمها إلى رموز - قيمة من النوع String (
delimiter) للتقسيم عندها
ينبغي للطريقة أن:
- تنشئ StringTokenizer باستخدام النص والفاصل المعطيين
- تعيد سلسلة نصية تحتوي على عدد الرموز، يتبعها كل رمز في سطر جديد
ينبغي أن تكون رسائل الإرجاع:
- إذا كان 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));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap5HashSet الجزء الثاني
رياضيات - اتحاد الـ HashSetsرياضيات - تقاطع الـ HashSetرياضيات - فرق المجموعاترياضيات - الفرق المتناظرالمجموعات الجزئية والشاملةالتكرار عبر المجموعات8عمليات السلاسل النصية المتقدمة
أساسيات StringBuilderمقدمة إلى StringBufferأساسيات Regular Expressionsمطابقة الأنماط باستخدام RegexString Tokenizerتنسيق النصوص المتقدم3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكمتدرّب بنفسك: مترجم Java عبر الإنترنت