C# – StringBuilder

StringBuilder
StringBuilder

StringBuilder ב-C# הוא טייפ אשר בא לפתור לנו בעיות זיכרון בעת ביצוע מניפולציות על מחרוזות, במאמר זה נעבור על אופרציות C.R.U.D שניתן לבצע על StringBuilder

מחרוזות בשפת C# הן immutable type כלומר שמרגע שיצרנו אותן הן לא ניתנות לשינוי.
למשל, אם ניצור את המחרוזת (string) – "g4a.co.il" יישמר עבורה מקום ב-Heap.

*יש לזכור כי מאחורי הקלעים, מחרוזת היא למעשה מערך של אותיות (char)

כלומר שאם נרצה למשל לשנות את המחרוזת ל – "Hello g4a.co.il" מה שיקרה מאחורי הקלעים זה שתיווצר מחרוזת חדשה במיקום זיכרון חדש.
כאשר מדובר בתוכנית גדולה ומסועפת אשר אנו מבצעים בה מגוון של מניפולציות על מחרוזות שוב שוב,
התנהלות זו יכולה להוריד את רמת הביצועים של התוכנית.

Normal string diagram
Normal string diagram

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

String Builder diagram
String Builder diagram

אופרציות C.R.U.D על StringBuilder

C.R.U.D הם ראשי תיבות של Create, Read, Update Delete.
כעת נדגים את אופרציות ה-C.R.U.D שניתן לבצע על טייפ זה.

Create – יצירת אובייקט StringBuilder

לשם תחילת העבודה נשתמש ב-System.Text:

using System.Text;

על מנת ליצור מופע חדש של StringBuilder נשתמש במילה השמורה – new,
נוכל כבר בעת יצירת המופע לתת את המחרוזת כפרמטר לבנאי:

StringBuilder builder = new("g4a.co.il");

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

StringBuilder builder = new("Hello g4a.co.il",50);

*על מנת לקבל מידע על האורך של המופע נוכל להשתמש ב-Length או Capacity

Read – קריאת המחרוזת מתוך מופע ה-StringBuilder

על מנת שנוכל לקבל את המחרוזת מתוך מופע ה-StringBuilder נוכל להשתמש במתודה ToString:

var g4a = builder .ToString();"
Update – שינוי\הוספת מחרוזות למופע ה-StringBuilder
  • על מנת להוסיף מילים למחרוזת אשר מחזיק ה-StringBuilder נוכל להשתמש במתודה Append:
StringBuilder builder = new();
builder .Append("Hello ");
builder .Append("g4a.co.il");
Console.WriteLine(builder );

*באמצעות Append, גם אם בשלב זה המחרוזת הייתה ריקה היינו יכולים להוסיף מילים

  • ב-AppendLine נוכל להשתמש על מנת להוסיף סימן הורדת שורה בסוף המחרוזת שאותה אנו מוסיפים למופע:
StringBuilder builder = new();
builder .Append("Hello ");
builder .AppendLine("g4a.co.il");
sbuilder .AppendLine("Hello, World!");
Console.WriteLine(builder );
  • במתודה AppendFormat נוכל להשתמש על מנת להוסיף ערך שאינו ידוע מראש למשל:
int number = 100;
StringBuilder amount = new("amount is: ");
amount.AppendFormat("{0}", number);

Console.WriteLine(amount);
  • במתודה Insert נוכל להשתמש על מנת להכניס מחרוזת במיקום ספציפי.
    הפרמטרים שנשלח למתודה הם האינדקס הרצוי והמחרוזת:
StringBuilder builder = new("Hello g4a.co.il\n");
builder.Insert(builder.Length, "Hello, World!");
Console.WriteLine(builder);

כלומר שאם נכתוב את התוכנית שלנו כך:

using System.Text;

StringBuilder builder = new();
builder.Append("Hello ");
builder.AppendLine("g4a.co.il");
builder.Insert(builder.Length, "Hello, World!");
Console.WriteLine(builder);

נוכל לקבל את הפלט הבא:

StringBuilder Append
StringBuilder Append
  • על מנת שנוכל להחליף\לשנות דברים במופע נוכל להשתמש במתודה Replace.
    הפרמטרים שנשלח הם המחרוזת שברצוננו להחליף והערך החדש:
StringBuilder builder = new("Hello World!");
builder.Replace("World!", "g4a.co.il");
Console.WriteLine(builder);
Delete – הסרת מחרוזת מהמופע

נוכל להשתמש ב-Remove כדי להסיר מחרוזת מהמופע.
הפרמטרים שנשלח הם האינדקס הרצוי וכמות האינדקסים שברצוננו למחוק ממנו והלאה.
בדוגמא הבאה נסיר את המילה "Hello":

StringBuilder builder = new("Hello g4a.co.il", 50);
builder.Remove(0,6);
Console.WriteLine(builder);

וכשנריץ קטע קוד זה נקבל את הפלט הבא:

 StringBuilder Remove() method
StringBuilder Remove() method

לקריאה מורחבת באתר של מייקרוסופט יש ללחוץ כאן

רוצים לשתף את המדריך?

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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

כתיבת תגובה

הזמינו אותי לכוס קפה
buy me coffee

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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