流利的谷歌搜索没有给出答案,所以问题是:
String.Split
方法是否确保根据它们在初始字符串中的位置确定所得子串的顺序?
感谢。
答案 0 :(得分:8)
根据string.Split
内部private string[] InternalSplitKeepEmptyEntries(
int[] sepList, int[] lengthList, int numReplaces, int count)
{
int num = 0;
int num2 = 0;
count--;
int num3 = (numReplaces < count) ? numReplaces : count;
string[] array = new string[num3 + 1];
int num4 = 0;
while (num4 < num3 && num < this.Length)
{
array[num2++] = this.Substring(num, sepList[num4] - num);
num = sepList[num4] + ((lengthList == null) ? 1 : lengthList[num4]);
num4++;
}
if (num < this.Length && num3 >= 0)
{
array[num2] = this.Substring(num);
}
else
{
if (num2 == num3)
{
array[num2] = string.Empty;
}
}
return array;
}
显示的内容,答案为是。
array
所有元素(例如{{1}}变量)始终按升序处理,不会进行排序。
ILSpy还列出的示例的结果与原始字符串中的顺序相同。
正如MSDN documentation for string.Split
所指出的那样,这只是当前的实现,可能会发生变化。
答案 1 :(得分:1)
是的。否则它将毫无用处。