אתה נמצא כאן יסודות השפה  »  ביטויים רגולריים  »  האופרטורים ()split ו ()join

האופרטורים ()split ו ()join

ניתן להשתמש בביטויים רגולריים כדי לפרק מחרוזות לשדות.
()split מפרק ואילו ()join מדביק את החלקים בחזרה.

()split

()split לוקח ביטוי רגולרי ומחרוזת ומחפש מופעים של הביטוי במחרוזת. חלקי המחרוזת שאינם מתאימים מוחזרים ברצף כרשימה. לדוגמא:

$sentence="I!love!perl!very!very!much!!";
@words=split(/!/,$sentence);
/*שוברים את המשפט למילים וסימן קריאה משמש כאן כמפריד בין המילים*/

    # :כעת תוכן המערך הוא
    # ("I","love","perl","very","very","much","")

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

@words=split(/!+/,$sentence);
/*שוברים את המשפט למילים וסימן קריאה משמש כאן כמפריד בין המילים*/

    # :כעת תוכן המערך הוא
    # ("I","love","perl","very","very","much")

עם הפלוס איחדנו את ה- !! ל - ! אחד ומנענו שדה ריק.
שוב, גם כאן, _$ הוא ברירת מחדל.

$_="I!love!perl!very!very!much!!";
@words=split(/!/);
/*זה כמו לכתוב ;(_$,/!/)words=split@*/

גם עבור פיצול זה, אם יהיו שני תוי רווח, אחד אחרי השני, התוצאה תהיה שאחד השדות שלאחר החלוקה יהיה מחרוזת ריקה. לכן עדיף לכתוב: /+ / או /+s\/ אשר מותאם לתו רווח אחד או יותר.
למעשה המחרוזת /+s\/ היא ברירת מחדל, ולכן אם נחלק את המשתנה _$ לפי תווי הרווח, ניתן פשוט לכתוב:

@words=split;
/*זה כמו לכתוב ;(_$,+/words=split(/\s@*/

shell יקבל undef) null) אם השורה אינה ארוכה מידי, או אם היא מכילה ערכים ריקים בשדה האחרון (השמת רשימה מתעלמת משדות מיותרים)









להוספת תגובה, אנא התחברו לדרכונט.