Вот что я бы сделал:
public static IEnumerable<string> EnumerateByLength(this string text, int length) {
int index = 0;
while (index < text.Length) {
int charCount = Math.Min(length, text.Length - index);
yield return text.Substring(index, charCount);
index += length;
}
}
Этот метод обеспечит отложенное выполнение (что на самом деле не имеет значения для такого неизменяемого класса, как string
, но стоит отметить).
Тогда, если вы хотите, чтобы метод заполнял массив для вас, вы могли бы иметь:
public static string[] SplitByLength(this string text, int length) {
return text.EnumerateByLength(length).ToArray();
}
Причина, по которой я бы выбрал имя EnumerateByLength
вместо SplitByLength
для "ядра"Метод заключается в том, что string.Split
возвращает string[]
, поэтому, на мой взгляд, есть приоритет для методов, имена которых начинаются с Split
для возврата массивов.
Хотя это только я.