הנך נמצא: מדריך מתקדם / שיעור 2 / דף 3
 


המדריך של תאו ל- JavaScript
 


דפים בשיעור זה:
1: המדריך המתקדם
2: טיפול מיוחד במחרוזות
3: substring
4: מתודת split
5: מערכים אסוציאטיבים
6: דוג' למערך אסוציאטיבי
7: cookies – היכרות
8: עוד אודות cookies
9: קריאת cookies - א'
10: קריאת cookies - ב'
11: קריאה וכתיבה
12: עוד אודות cookies
13: cookie - path/domain
14: סיכום שיעור 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

שיעור 2

דף 3: substring

מתודת ה- substring היא בדיוק כמו מתודת ה- charAt, פרט לעובדה שהיא יכולה להחזיר תת מחרוזת שלמה (ולא רק תו בודד). הנה מבנה הפקודה:

var the_substring = the_string.substring(from, to);

"from" מתייחס למיקום של האות הראשונה בתת המחרוזת, ו- "to" מתייחס, באופן מפתיע, למיקום של תו אחד אחרי סוף התת-מחרוזת שאותה רצינו. הסיבה לסימון המוזר למיקום של תחילת וסוף המחרוזת נועד על מנת שההפרש בין הערכים יתן בדיוק את אורך התת-מחרוזת שאותה חיפשנו:

var the_string = "monkey";
var clergy = the_string.substring(0,4);
var tool = the_string.substring(3,6);

אחרי הרצת הקוד, המשתנה clergy (כמורה) יהיה בעל הערך "monk" (נזיר); המשתנה "tool" (כלים) יהיה בעל הערך "key" (מפתח).

לעיתים קרובות נעשה שימוש במתודה substring יחד עם המתודה indexOf, על מנת להפריד בין חלקים שונים במחרוזת. לדוגמא, תוכל להוציא את שם המרחב (domain) מתוך מחרוזת URL כלשהיא, ע"י שימוש בקוד הבא:

var the_url = prompt("What's the URL?","");
var lead_slashes = the_url.indexOf("//");
var domain_start = lead_slashes + 2;
var without_resource = the_url.substring(domain_start, the_url.length);
var next_slash = without_resource.indexOf("/");
var domain = without_resource.substring(0, next_slash);

כלומר, אם תקיש "http://www.webmonkey.com/javascript/index.html" הרי ששם ה- domain יהיה: "www.webmonkey.com". נסה את לוכד ה- domains על מנת לראות אותו בפעולה. אם הקוד נראה לך קצת מסובך, אל דאגה, לאחר שנעבור עליו שורה שורה, אני אראה לך איך לעשות דברים בצורה הרבה יותר פשוטה ע"י שימוש במתודת split. ראשית, ניתוח הקוד.

הטקטיקה הבסיסית בה ננקוט היא למעשה, לבודד את הטקסט שבין שני הלוכסנים הראשונים לבין הלוכסן הבודד שבא אחריהם במחרוזת. הנה הדרך לעשות זאת:

var the_url = prompt("What's the URL?","");

שורה זו פשוט מבקשת מהמשתמש להקיש URL, אותו תשמור כמחרוזת. נניח למשל שהקשנו את המחרוזת: "http://www.webmonkey.com/javascript/index.html".

var lead_slashes = the_url.indexOf("//");

שורה זו מאתרת את מיקום שני הלוכסנים הראשונים. במקרה שלנו, lead_slashes יהיה שווה "5", מכיוון שזוג הלוכסנים מתחיל במיקום 5.

מה זה? אתה בטח תוהה "אבל תמיד URL מתחיל עם //:http אז אולי פשוט ניגש ישירות למקום החמישי במקום לבדוק זאת?" העניין הוא, שלא תמיד ביכולתך לדעת מה ישים המשתמש בתיבת הטקסט. אולי יוסיף תו רווח מוביל, ואולי פשוא ירשום: "/the URL I want is: http://blah.com", או שאולי פשוט ה- URL נמצא על גבי שרת מאובטח ובכלל נראה כך: "https://www.secure.com/me.html".

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

var domain_start = lead_slashes + 2;

פקודה זו מחשבת את המיקום של התו הראשון בשם ה- domain. מכיוון שישנם שני לוכסנים, התו שראשון יתחיל שני מקומות אחרי מיקום הלוכסן הראשון.

var without_resource = the_url.substring(domain_start, the_string.length);

פקודה זו לוקחת את כל תת המחרוזת ממקום תחילת שם ה- domain (שחושב קודם) ועד לסוף המחרוזת. כך שבדוגמא שלנו נקבל: "www.webmonkey.com/javascript/index.html".

var next_slash = without_resource.indexOf("/");

פקודה זו מחשבת את המיקום של הלוכסן הבא (אחרי זוג הלוכסנים) במחרוזת. כל מה שבין תחילת המחרוזת הזו ועד ללוכסן זה הוא למעשה שם ה- domain. במקרה זה המקום של הלוכסן הבא הוא: 17.

var domain = without_resource.substring(0, next_slash);

פקודה אחרונה זו, פשוט לוקחת את כל מה שמופיע מתחילת המחרוזת עד למקום של תו אחד לפני הלוכסן. ובמקרה זה: "www.webmonkey.com".

וזהו זה. כן, זה כואב. אם אתה מוצא בזאת נחמה, אז דע לך שניהול מחרוזות היא פעולה כואבת כמעט בכל שפה. JavaScript 1.2 שהוצגה ב- Netscape 4.0, עושה מספר צעדים במטרה להפוך את ניהול המחרוזות לפעולה קצת יותר קלה. אולם, היא בכל זאת כואבת.

כל העסק יכול להתנהל ביתר קלות ע"י שימוש במתודת split.

חזור לתחילת הדף

לדף הבא «--

 
       
       
   
 
 

עמוד ראשי
מדריך בסיסי
מדריך מתקדם
החלפת תמונות
גניבת קוד
מפת האתר