根据MSDN,您可以使用该split
方法的重载版本。
public string[] Split(char[] separator, int count, StringSplitOptions options )
参数
separator 类型:System.Char[] 用于分隔此字符串中的子字符串的 Unicode 字符数组、不包含分隔符的空数组或 null。
count 类型:System.Int32 要返回的最大子字符串数。
options 类型:System.StringSplitOptions StringSplitOptions.RemoveEmptyEntries 从返回的数组中省略空数组元素;或 StringSplitOptions.None 在返回的数组中包含空数组元素。
返回值
类型:System.String[] 一个数组,其元素包含此字符串中的子字符串,这些子字符串由分隔符中的一个或多个字符分隔。有关详细信息,请参阅备注部分。
所以像这样:
String str = "A,B,C,D,E,F,G,H,I";
String[] str2 = str.Split(new Char[]{','}, 5, StringSplitOptions.RemoveEmptyEntries);
System.Console.WriteLine(str2.Length);
System.Console.Read();
将打印:5
编辑:经过进一步调查,该参数似乎count
只是指示拆分何时停止。字符串的其余部分将保留在最后一个元素中。
因此,上面的代码将产生以下结果:[0] = A, [1] = B, [2] = C, [3] = D, [4] = E,F,G,H,I
,这不是您似乎想要的。
要解决此问题,您需要执行以下操作:
String str = "A\nB\nC\nD\nE\nF\nG\nH\nI";
List<String> myList = str.Split(new Char[]{'\n'}, 5, StringSplitOptions.RemoveEmptyEntries).ToList<String>();
myList[myList.Count - 1] = myList[myList.Count - 1].Split(new Char[] { '\n' })[0];
System.Console.WriteLine(myList.Count);
foreach (String str1 in myList)
{
System.Console.WriteLine(str1);
}
System.Console.Read();
上面的代码将只保留前 5 个(在您的情况下为 1000 个)元素。因此,如果您愿意,我认为达林的解决方案可能会更干净。