拆分512个char块中的字符串

jan*_*ann 10 c# string split

也许是一个基本问题,但让我们说我有一个长度为2000个字符的字符串,我需要将此字符串拆分为每个最多512个字符的块.

有没有一个好方法,像一个循环左右这样做?

Jon*_*eet 20

像这样的东西:

private IList<string> SplitIntoChunks(string text, int chunkSize)
{
    List<string> chunks = new List<string>();
    int offset = 0;
    while (offset < text.Length)
    {
        int size = Math.Min(chunkSize, text.Length - offset);
        chunks.Add(text.Substring(offset, size));
        offset += size;
    }
    return chunks;
}
Run Code Online (Sandbox Code Playgroud)

或者只是迭代:

private IEnumerable<string> SplitIntoChunks(string text, int chunkSize)
{
    int offset = 0;
    while (offset < text.Length)
    {
        int size = Math.Min(chunkSize, text.Length - offset);
        yield return text.Substring(offset, size);
        offset += size;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这会分成UTF-16代码单元的块,这与分割成Unicode代码点的块不完全相同,而这些代码点又可能与分割成字形块不同.