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