c# – 按长度变量将字符串拆分成更小的字符串

我想用一个长度变量分隔一个字符串。
它需要限制检查,以便在字符串的最后一个部分不长于或长于长度时不会爆炸。寻找最简洁(但可以理解)的版本。

例:

string x = "AAABBBCC";
string[] arr = x.SplitByLength(3);
// arr[0] -> "AAA";
// arr[1] -> "BBB";
// arr[2] -> "CC"
你需要使用一个循环:

public static IEnumerable<string> SplitByLength(this string str, int maxLength) {
    for (int index = 0; index < str.Length; index += maxLength) {
        yield return str.Substring(index, Math.Min(maxLength, str.Length - index));
    }
}

替代方案:

public static IEnumerable<string> SplitByLength(this string str, int maxLength) {
    int index = 0;
    while(true) {
        if (index + maxLength >= str.Length) {
            yield return str.Substring(index);
            yield break;
        }
        yield return str.Substring(index, maxLength);
        index += maxLength;
    }
}

第二选择:(对于那些谁不能站立while(true))

public static IEnumerable<string> SplitByLength(this string str, int maxLength) {
    int index = 0;
    while(index + maxLength < str.Length) {
        yield return str.Substring(index, maxLength);
        index += maxLength;
    }

    yield return str.Substring(index);
}
http://stackoverflow.com/questions/3008718/split-string-into-smaller-strings-by-length-variable

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 按长度变量将字符串拆分成更小的字符串