جداسازی متن یک رشته بر اساس شمارش کاراکترها در سی شارپ #C

کد با پلتفرم بوی - کد سی شارپ
کد با پلتفرم بوی – کد سی شارپ

فرض کنید ما یک متن شبیه به زیر داشته باشیم :

abcdefghij

و بعد بخواهیم این متن را سه کاراکتر سه کاراکتر شمارش کرده و هر کدام را در یک رشته جدید یا آرایه جدید ذخیره کنیم . به طوری که رشته ها شبیه زیر شوند :

abc
def
ghi
j

روش اول

پلتفرم بوی اجرا شدن خروجی صحیح قطعه کد زیر را تایید می کند

قطعه کدی که در زیر مشاهده می کنید توسط برنامه کامپایلر به جهت تست آزمایش شده و خروجی صحیح مدنظر را بدست آورد.

IEnumerable<string> GetNextChars ( string str, int iterateCount )
{
    var words = new List<string>();

    for ( int i = 0; i < str.Length; i += iterateCount )
        if ( str.Length - i >= iterateCount ) words.Add(str.Substring(i, iterateCount));
        else words.Add(str.Substring(i, str.Length - i));

    return words;
}

برای استفاده از این تابع از خط کد زیر استفاده کنید :

 foreach (var v in GetNextChars(your_textbox.Text, 50))
{
   MessageBox.Show(v);
}

روش دوم

می توانید از این قطعه کد استفاده کنید:

IEnumerable<string> Split(string str) {
    for (int i = 0; i < str.Length; i += 3)
        yield return str.Substring(i, Math.Min(str.Length - i, 3));
}

روش سوم

این قطعه کد کاراکترها را در گروه های 3 تایی گروه بندی می کند و هر گروه را به یک رشته تبدیل می کند.

string s = "abcdefghij";

var split = s.Select((c, index) => new {c, index})
    .GroupBy(x => x.index/3)
    .Select(group => group.Select(elem => elem.c))
    .Select(chars => new string(chars.ToArray()));

foreach (var str in split)
    Console.WriteLine(str);

روش چهارم

می توانید از کتابخانه Linq استفاده کنید

static IEnumerable<string> Split(string str)
{
    while (str.Length > 0)
    {
        yield return new string(str.Take(3).ToArray());
        str = new string(str.Skip(3).ToArray());
    }
}

روش پنجم

می توانید از یک روش جدیدتری استفاده کنید. در این قطعه کد از آرایه ها استفاده شده است.

string[] MySplit(string input)
{
   List<string> results = new List<string>();
   int count = 0;
   string temp = "";

   foreach(char c in input)
   {
      temp += c;
      count++;
      if(count == 3)
      {
         result.Add(temp);
         temp = "";
         count = 0;
      }
   }

   if(temp != "")
      result.Add(temp);

   return result.ToArray();
}

کدهای بیشتر - سی شارپ

آیا این مطلب برای شما مفید بود؟

بله
نه اصلا
از اینکه بازخورد خود را در اختیار ما گذاشته اید متشکریم. تا بعد 🙂

2 thoughts on “جداسازی متن یک رشته بر اساس شمارش کاراکترها در سی شارپ #C

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *