Split string into fixed length blocks

suggest change

We cannot break a string into arbitrary points (because a System.Char may not be valid alone because it’s a combining character or part of a surrogate) then code must take that into account (note that with length I mean the number of graphemes not the number of code-units):

public static IEnumerable<string> Split(this string value, int desiredLength)
    var characters = StringInfo.GetTextElementEnumerator(value);
    while (characters.MoveNext())
        yield return String.Concat(Take(characters, desiredLength));

private static IEnumerable<string> Take(TextElementEnumerator enumerator, int count)
    for (int i = 0; i < count; ++i)
        yield return (string)enumerator.Current;

        if (!enumerator.MoveNext())
            yield break;

Feedback about page:

Optional: your email if you want me to get back to you:

Table Of Contents