A common scenario in an admin’s world is to figure out a way to find a certain snippet of text inside a string; called the substring. PowerShell makes finding a substring extremely easy.
נוגע: למידה על פורמט המחרוזת והרחבת מחרוזות
הכרזה על הכשרה חינמית בשיעור חי – התחלת מסע PowerShell שלך – הוצג על ידי יוהן ארווידמרק. הבנה איך המיומנויות ב-PowerShell משפרות את קריירת ה-IT שלך, למד היכן להתחיל עם PowerShell, בנה את התסריטים הראשונים שלך, ושאל את יוהן שאלות ישירות בסביבה של הכשרה חיה.
PowerShell ומחרוזות
בעולם של PowerShell , מחרוזת מורכבת מסט של תווים הסגורים בגרשיים יחידים או כפולים. מחרוזות כמו "foo"
ו־'bar'
נפוצות ביותר.
נוגע: חזרה ליסודות: מחרוזות ב-PowerShell
נניח שהגדרת מחרוזת במשתנה ורק צריך למצוא חלק ממנה? לדוגמה, נניח שיש לך מחרוזת עם כתובת כמו 1234 רחוב ה-4. אתה רוצה לחלץ את המספר ולדעת שהתווים הראשונים יהיו תמיד המספר שאתה צריך. במקרה זה, אפשר להשתמש בשיטת Substring()
של PowerShell.
שימוש בשיטת Substring של PowerShell
כדי למצוא מחרוזת בתוך מחרוזת באמצעות PowerShell, ניתן להשתמש בשיטת Substring()
. השיטה הזו נמצאת בכל אובייקט מחרוזת ב-PowerShell.
לדוג, אולי יש לך מחרוזת כמו The quick brown fox jumped over the fence.
ותרצה למצוא את חמישת התווים הראשונים. אפשר לעשות זאת באמצעות השיטה Substring()
כך:
הארגומנט הראשון שיש למסור לשיטה Substring()
הוא מיקום התו השמאלי ביותר. במקרה זה, התו השמאלי הוא T
. הארגומנט השני הוא מיקום התו הימני הרחוק ביותר. במקרה זה, התו הוא q
.
שיטת Substring()
מחזירה את כל התווים ביניהם.
הנה דוגמה ממציאות:
נניח שיש לנו קוד מוצר המשתמש בפורמט הבא: XXXXVVVV-MM-DD-YYYY
. כל המוצרים משתמשים בפורמט זה ואינם סוף ממנו. עכשיו נניח שתוכנת ניהול המלאי שיצרה את הקוד לא כללה שדה לתאריך יצירת הרשומה במסד הנתונים.
אך, התוכנה מכניסה את התאריך כ MM-DD-YYYY
בקוד המוצר עצמו, ולכן אנו יכולים להשיג את התאריך מקוד המוצר. אנו צריכים לקבל את התאריך הזה עבור המוצרים כדי ליצור דוח מיוחד ומיותר ביותר להצגת זמן ההכנסה של כל מוצר למסד הנתונים. הנה אופן טוב לעשות זאת.
בדוגמה זו, אנו משתמשים בשיטת SubString()
של PowerShell עבור אובייקט המחרוזת הטבעי ומספקים את מספר התו הראשון שברצוננו למצוא כפרמטר.
מאחר שאנחנו לא מציינים את התו העוצר, המעריך שאנו רוצים את כל התווים עד סוף המחרוזת. כדי למצוא את המספר מראש, אנו ראשית מקבלים את אורך קוד המוצר כולו וסופרים פשוט 10 ממנו. בדוגמה זו, זה אומר שאנו רוצים להתחיל בתו ה-10 מהימין של המחרוזת והכל מהשמאל לכך.
הסוג [DateTime]
לא בהכרח הולך יחד עם נושא החתימה של הפוסט, אך חשבתי שזה יתאים נחמד לדוגמה הספציפית.
לאחר שאנו מקבלים את המחרוזת שלנו של 11-12-2013, אנו ממירים אותה לאובייקט [DateTime]
שמהוספת יותר מחרוזת פשוטה לאובייקט נחמד. מכאן, אנו יכולים לעשות את כל ניהול החשבונאות המתקדם שהניהול רוצה מאיתנו עליו וליצור את הדוח המתקדם הזה!
מציאת תת מחרוזת באופן דינמי באמצעות מאפיין האורך
בדוגמה הנ"ל, אתה הגדרת את נקודות ההתחלה והסיום סטטית בתוך התווים במחרוזת. אבל מה אם אין לך את המיקום האחרון?
אולי נדרש לך למצוא את התת מחרוזת מהארבעה תווים האחרונים. עליך למצוא את קבוצת התווים מהמיקום הרביעי עד האחרון כולו. המחרוזת שאתה מחפש בה עשויה להיות באורך כלשהו.
במקום להגדיר את המיקום האחרון כמספר חיובי המספר מהשמאל, אנו יכולים לציין דינמית את מיקום הסיום באמצעות אורך המחרוזת ובפינוק מספר כלשהו של תווים ממנו.
משתמשים במחרוזת למעלה `$product_code = 'ABCD1234-11-12-2013'
`, אולי ברצונך למצוא את ארבעת התווים האחרונים. במקום לעשות משהו כמו זה:
ניתן להחליף 0
ב- $product_code.Length - 4
ולא להשתמש בסוף המיקום כלל וזה יחזיר את ארבעת התווים האחרונים כפי שמוצג למטה.
אם לא צוין את מיקום הסיום, שיטת המחרוזת בפוורשל תשתמש באופן ברירת המחדל במיקום התו האחרון.
באמצעות שימוש במאפיין length
של המחרוזת שהוא מספר התווים הכולל במחרוזת ובעידוד מהסכום הזה, ניתן לבחור תת-מחרוזות דינמיות.
מכריזים על הדרכה חינמית בשידור חי – התחלת המסע שלך עם PowerShell – מוצג על ידי יוהאן ארווידמרק. הבנה כיצד מיומנויות PowerShell משפרות את הקריירה שלך בתעשיית ה-IT, למד איפה להתחיל עם PowerShell, בנה את התסריטים הראשונים שלך, ושאל שאלות ליוהאן ישירות בסביבת הדרכה חיה.