Menu
Coddy logo textTech

StringTokenizer

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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(), האסימון הזה מוסר ממחלק הטוקנים. המתודה 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() כדי לבדוק אם יש אסימונים נוספים בזמן המעבר עליהם.

challenge icon

אתגר

קל

צרו מתודה בשם tokenizeText שמקבלת שני ארגומנטים:

  1. מחרוזת (text) לפיצול לטוקנים
  2. מחרוזת (delimiter) שלפיה יתבצע הפיצול

המתודה צריכה:

  1. ליצור StringTokenizer עם הטקסט והמפריד הנתונים
  2. להחזיר מחרוזת שמכילה את מספר הטוקנים, ואחריו כל טוקן בשורה חדשה

ההודעות שיוחזרו צריכות להיות:

  • אם 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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Java אונליין