できません。orz
セパレーター(char)が無いと何ともできません。
不便なのでSplitByLengthなる関数を作ったりしましたが、拡張メソッドのほうが格好良くね?
ということでネットで調べて作りました。
【追記】
最初の投稿にいくつかコメントをいただきまして、勝手に完成度の高いものになってしまいました。
Qiita恐るべしです。
#サロゲートペアに対応
@ktz_aliasさんからサロゲートペアがあると文字化けするとコメントとコードをいただきました。
サロゲートペアって何?美味しいの?ってくらいに知らなかったんですが、4バイト文字だったのね。
@ktz_aliasさん、ありがとうございました。
丸写し
public static class StringExtensions
{
/// <summary>
/// 指定の文字数で分割
/// </summary>
/// <param name="value">分割する文字列</param>
/// <param name="maxLength">分割する文字数</param>
/// <returns>配列</returns>
public static IEnumerable<string> Split(this string value, int maxLength)
{
var info = new StringInfo(value);
var len = info.LengthInTextElements;
var p0 = 0;
var p1 = maxLength;
while (p0 < len)
{
if (p1 > len)
{
p1 = len;
}
yield return info.SubstringByTextElements(p0, p1 - p0);
p0 = p1;
p1 += maxLength;
}
}
}
#.NET6版(サロゲートペア非対応)
@htsignさんから、.NET 6からChunkメソッドが使えると教えていただきました。
サロゲートペアがなんぼのもんじゃい!という方はぜひ。
とても簡潔に記述できます。
@htsignさん、ありがとうございました。
こちらも丸写し
public static class StringExtensions
{
/// <summary>
/// 指定の文字数で分割
/// </summary>
/// <param name="value">分割する文字列</param>
/// <param name="maxLength">分割する文字数</param>
/// <returns>配列</returns>
public static string[] Split(this string value, int maxLength)
{
return value.Chunk(maxLength).Select(cs => new string(cs)).ToArray();
}
}