Menu
CoddyTech

StringTokenizer

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

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 אונליין