جداکردن رشته ها

اگر بخواهید یک رشته را به چند رشته تکه تکه کنید می‌توانید از متد ()split استفاده نمایید. اجازه دهید نگاهی به سربارگذاری های مختلف این متد بیندازیم. متد ()Split، آرایه‌ای از رشته‌ها را بر می‌گرداند، که هر عنصر از این آرایه، شامل یک زیر رشته است. اولین سربارگذاری این متد، آرایه‌ای از کاراکترها را قبول می‌کند و بر اساس آنها تشخیص می‌دهد که رشته باید در چه جایی به قسمت‌های مختلف تقسیم شود.

string message = "The quick brown fox jumps over the lazy dog.";
string[] substrings = message.Split(' ');

foreach (string s in substrings)
{
    Console.WriteLine(s);
}
The
quick
brown
fox
jumps
over
the
lazy
dog.

در مثال بالا از کاراکتر فاصله (‘ ‘) برای جدا کردن کلمات در رشته بالا استفاده کرده‌ایم چون دو کلمه متوالی به وسیله فاصله از هم جدا می‌شوند. کلمات در آرایه substrings ذخیره می‌شوند. سپس با استفاده از دستور foreach آن‌ها را در خطوط جداگانه چاپ می‌کنیم. می‌توان تعداد زیر رشته‌های برگشتی را به وسیله سربارگذاری دیگر متد ()Split محدود کرد.

string message = "The quick brown fox jumps over the lazy dog.";
string[] substrings = message.Split(" ".ToCharArray(), 3); 

foreach (string s in substrings)
{
    Console.WriteLine(s);
}
The
quick
brown fox jumps over the lazy dog.

همانطور که در مثال بالا مشاهده می‌کنید، دومین آرگومان برای تشخیص تعداد زیر رشته‌ها به کار می‌رود. خروجی نشان می‌دهد که دو کلمه اول از رشته جدا شده‌اند و مابقی رشته در عنصر آخر آرایه ذخیره می‌شود. سربارگذاری دیگر این متد استفاده از نوع شمارشی StringSplitOptions است. این نوع شمارشی دارای دو مقدار None و RemoveEmptyEntries است. با استفاده از StringSplitOptions.None می‌توانید یک زیر رشته خالی در آرایه ذخیره کنید. و با استفاده از StringSplitOptions.RemoveEmptyEntries می‌توان تمام زیر رشته‌های خالی را حذف کرد. به تکه کد زیر توجه کنید :

string message = "string1#string2##string4#string5";
string[] results = message.Split("#".ToCharArray(), StringSplitOptions.None);

foreach (string s in results)
{
    Console.WriteLine(s);
}
string1
string2

string4
string5

در سربارگذاری متد ()Split که در مثال بالا مشاهده کردید متد یک آرایه از نوع کاراکتر به عنوان اولین آرگومان قبول کرده و به دستور ما از کاراکتر “#” برای تعیین حد زیر رشته‌ها استفاده می‌کند. به همین دلیل است که از متد ()ToCharArray استفاده کرده‌ایم. دومین آرگومان مقدار StringSplitOption است. در این قسمت ما مقدار None را ارسال می‌کنیم و چون رشته دارای زیر رشته خالی است ارسال این مقدار چندان تاثیری در نمایش نهایی ندارد (می‌توانید یکبار قسمت StringSplitOptions.None را حذف کرده و برنامه را اجرا کنید). حال از مقدار RemoveEmptyEntries استفاده می‌کنیم.

string message = "string1#string2##string4#string5";
string[] results = message.Split("#".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);

foreach (string s in results)
{
    Console.WriteLine(s);
}
string1
string2
string44string5

همانطور که مشاهده می‌کنید نتیجه استفاده از این مقدار حذف سومین زیر رشته خالی است. از این روش اغلب برای ذخیره داده در فایل متنی استفاده می‌شود.