我想用一定长度的变量将字符串分开。 它需要进行边界检查,以便在字符串的最后一部分不长于或长于该长度时不会爆炸。寻找最简洁(至今可以理解)的版本。
例:
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; } }
2 次选择:(对于那些谁也受不了while(true))
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); }