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() כדי לבדוק אם יש אסימונים נוספים בזמן המעבר עליהם.
אתגר
קלצרו מתודה בשם tokenizeText שמקבלת שני ארגומנטים:
- מחרוזת (
text) לפיצול לטוקנים - מחרוזת (
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מערכים רב־ממדיים
יסודות מערכים דו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום — מערכים דו־ממדייםחיבור וחיסור מטריצותמערכים מדורגיםמערכים תלת־ממדיים ומעבר להםתבניות נפוצות במערכים דו־ממדייםסיכום — כל מה שצריך לדעת על מערכים5HashSet חלק 2
מתמטיקה - איחוד של HashSetsמתמטיקה - חיתוך של HashSetמתמטיקה - הפרש קבוצותמתמטיקה - הפרש סימטריתת־קבוצות וקבוצות־עלמעבר על קבוצות8פעולות מתקדמות על מחרוזות
יסודות StringBuilderמבוא ל-StringBufferיסודות ביטויים רגולרייםהתאמת תבניות באמצעות RegexStringTokenizerעיצוב מחרוזות מתקדםתרגלו בעצמכם: קומפיילר Java אונליין