189. String.Split

עוד פונקציה נחמדה של string היא Split.

כפי שמרמז שמה, היא מאפשרת לנו לפצל מחרוזת עפ”י תווים או מחרוזות שאנחנו מציינים לה.

למשל,

1
2
string filePath =
@"\\netshare\first\second\third\fourth\textfile.txt";

נוכל לפצל אותו לפי התו \ ולקבל:

1
2
string[] tokens = filePath.Split('\\');
// tokens = new[] {"", "", "netshare", "first", "second", "third", "fourth", "textfile.txt"};

בנוסף אפשר לפצל לפי מספר תווים, למשל לפי התווים \ ו. ולקבל:

1
2
string[] tokens = filePath.Split('\\', '.');
// tokens = new[] {"", "", "netshare", "first", "second", "third", "fourth", "textfile", "txt"};

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

1
2
string[] tokens = filePath.Split(new char[] {'\\', '.'},StringSplitOptions.RemoveEmptyEntries);
// tokens = new[] {"netshare", "first", "second", "third", "fourth", "textfile", "txt"};

בנוסף, אפשר להעביר גם פרמטר המציין לכמה איברים לכל היותר אנחנו מעוניינים לפצל (אם למשל מעניינים אותנו רק 3 האיברים הראשונים). האיבר האחרון הוא מה שנשאר ללא פיצול:

1
2
string[] tokens = filePath.Split(new char[] {'\\', '.'}, 4, StringSplitOptions.RemoveEmptyEntries);
// tokens = new[] {"netshare", "first", "second", @"third\fourth\textfile.txt"};

אפשר גם לפצל לפי מחרוזות שלמות:

1
2
string[] tokens = filePath.Split(new string[] {"ir", "le"},StringSplitOptions.RemoveEmptyEntries);
//tokens = new[] {@"\\netshare\\f", @"st\second\th", @"d\fourth\textfi", @".txt"};

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

למשל, מימוש XPath, או מציאת כל השורות של טקסט מסוים (ע"י פיצול באמצעות Environment.NewLine, ראו גם טיפ מספר 184)

למעשה, אפשר לומר שזו הפעולה ההפוכה לstring.Join. ראו גם טיפ מספר 9.

המשך יום מתפצל לטובה

שתף