
فرض کنید ما یک متن شبیه به زیر داشته باشیم :
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();
}


ببخشید درباره این خط کد بیشتر توضیح میدید ؟
List results = new List();
سلام
یک لیست متنی جدید ایجاد میکنه