どうも、ちょげ(@chogetarou)です。
forループを使って文字列を特定の文字数ごとに分割する方法を紹介します。
方法

forループで文字列を特定の文字数ごとに分割するには、Substringを使います。
まず、forループします。
forループの変数の初期値に0、条件に変数が文字列の長さ未満を指定します。
forループの変数を分割する際の文字数でインクリメントします。
次に、ループ処理内でEnumerableに、文字列のSubstring()メソッドを渡します。
SubString()メソッドの第1引数にforループの変数、第2引数にMath.Min()を指定します。
そして、Math.Min()の第1引数に分割する際の文字数、第2引数に文字列の長さをループ変数で引いた値を指定します。
public static IEnumerable<string> Split(string text, int size)
{
for(var i = 0; i < text.Length; i += size)
{
yield return text.Substring(i, Math.Min(size, text.Length - i));
}
}
上記のforループは、文字列を特定の文字数ごとに分割したEnumerableを生成します。
使用例
using System;
using System.Collections.Generic;
public class Example
{
public static IEnumerable<string> Split(string text, int size)
{
if (String.IsNullOrEmpty(text) || size < 1)
{
throw new ArgumentException();
}
for(var i = 0; i < text.Length; i += size)
{
yield return text.Substring(i, Math.Min(size, text.Length - i));
}
}
public static void Main()
{
string text = "123456789";
IEnumerable<string> names = Split(text, 3);
foreach(var name in names)
{
Console.WriteLine(name);
}
}
}
/*
出力:
123
456
789
*/
コメント