Looking for .net Keywords? Try Ask4Keywords

.NET Framework Разделить строку на блоки фиксированной длины


пример

Мы не можем разбить строку на произвольные точки (потому что System.Char может быть недействительным в одиночку, потому что это комбинационный символ или часть суррогата), тогда код должен учитывать это (обратите внимание, что с длиной я имею в виду количество графем, а не количество кодовых единиц ):

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;
    }
}