כיצד להשתמש בשיטת "פיצול" ברובי

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

אחד הבסיסיים ביותר מניפולציה מחרוזת פעולות היא לפצל מחרוזת למספר מיתרי משנה. זה ייעשה, למשל, אם יש לך מחרוזת כמו"foo, bar, baz" ואתה רוצה את שלושת המיתרים "foo", "bar" ו- "baz". ה מפוצל השיטה של ​​חוג מחרוזות יכולה להשיג זאת עבורך.

השימוש הבסיסי של "פיצול"

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

#! / usr / bin / env אודם
str = "foo, bar, baz"
מכניס str.split (",")
$ ./1.rb
פו
בר
baz

הוסף גמישות עם ביטויים רגילים

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

שוב, קחו לדוגמא את המחרוזת "foo, bar, baz". יש מרחב אחרי הפסיק הראשון, אך לא אחרי השנייה. אם המחרוזת "," משמשת כמתחום, רווח עדיין יהיה בתחילת מחרוזת "סרגל". אם נעשה שימוש במחרוזת "," (עם רווח אחרי הפסיק), זה יתאים רק לפסיק הראשון שכן לפסיק השני אין רווח אחריו. זה מאוד מגביל.

instagram viewer

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

כתיבת ביטויים רגילים

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

ישנם שני אלמנטים למ regex זה: הפסיק והמרווחים האופציונליים. החללים ישתמשו בכמת * (כוכב או כוכבית) שמשמעותה "אפס ומעלה." כל אלמנט שקודם לזה יתאים לאפס או יותר פעמים. לדוגמה, ה- regex /a*/ יתאימו לרצף של תווים 'א' או יותר.

#! / usr / bin / env אודם
str = "foo, bar, baz"
מכניס str.split (/, * /)
$ ./2.rb
פו
בר
baz

הגבלת מספר הפיצולים

דמיין מחרוזת ערך מופרדת בפסיק כגון "10,20,30, זה מחרוזת שרירותית". פורמט זה הוא שלושה מספרים ואחריו טור תגובה. טור תגובה זה יכול להכיל טקסט שרירותי, כולל טקסט עם פסיקים בתוכו. למנוע מפוצל מפיצול הטקסט של העמודה הזו אנו יכולים להגדיר את המספר המרבי של העמודות לפיצול.

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

כדי להגביל את מספר הפיצולים שתבצע שיטת הפיצול, העבירו את מספר השדות במחרוזת כארגומנט שני לשיטת הפיצול, כך:

#! / usr / bin / env אודם
str = "10,20,30, עשר, עשרים ושלושים"
מכניס str.split (/, * /, 4)
$ ./3.rb
10
20
30
עשר, עשרים ושלושים

דוגמא לבונוס!

מה אם אתה רוצה להשתמש מפוצל להשיג את כל הפריטים אבל את הראשון?

זה פשוט מאוד:

ראשית, * מנוחה = ex.split (/, /)

הכרת המגבלות

לשיטת הפיצול יש כמה מגבלות גדולות למדי.

קח למשל את המחרוזת '10, 20, 'בוב, איב ומלורי', 30 '. הכוונה היא שני מספרים, אחריהם מחרוזת מצוטטת (שעשויה להכיל פסיקים) ואז מספר אחר. פיצול לא יכול להפריד נכון מחרוזת זו לשדות.

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

instagram story viewer