אתה נמצא כאן יסודות השפה  »  התאמת מחרוזות  »  החלפת תת מחרוזת

החלפת תת-מחרוזת

הוצאה של תת מחרוזת ממחרוזת אחרת

הוצאה של תת מחרוזת מתוך מחרוזת אחרת יכולה להעשות ע"י ביטויים רגולריים. אבל אם ידוע לנו המיקום של תת המחרוזת, יש פונקציה קיימת שתעשה את העבודה.
 substr מקבלת מחרוזת, אינדקס התחלה (כמו ש  index מחזירה) ומספר תווים, ומחזירה את תת המחרוזת המבוקשת.
דוגמא - העתקת המילה  this מתוך המחרוזת הנתונה:

#!/usr/local/bin/perl

$source string = "take this out";
$extract = substr($source_string,5,4);
/*תוחזר מחרוזת בת 4 תווים החל ממקום 5 במחרוזת הנתונה*/

  • אם אורך המחרוזת המבוקש הוא 0 תוחזר מחרוזת ריקה
  • אם אורך המחרוזת המבוקש גדול ממספר התוים שיש החל מהאינדקס הנתון ועד סוף המחרוזת - יוחזרו כל התויים עד סוף המחרוזת
  • אם אינדקס ההתחלה הוא מספר שלילי - אינדקס ההתחלה יחושב מסוף המחרוזת (כלומר המספר השלילי יופחת מאינדקס התו האחרון של המחרוזת ומשם הפונקציה תתחיל להעתיק)
  • אם אינדקס ההתחלה הוא מספר שלילי גדול מדי, הפונקציה תתחיל להעתיק מהתו הראשון במחרוזת הנתונה.
  • אם אינקס ההתחלה הוא מספר גדול מדי (מחוץ לטווח המחרוזת) תוחזר מחרוזת ריקה.

החלפת תת מחרוזת בתוך מחרוזת

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

#!/usr/local/bin/perl

$source_string = "old string";
substr($source_string,0,3)
/*הפונקציה תחליף את תת המחרוזת באורך 3 החל מתו 0 במחרוזת הנתונה*/
 = "new"
/*זאת המחרוזת שתחליף אותה*/
;
# $source_string = "new string"

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









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