Обеспечивает ли метод String.Split порядок в массиве результатов? - PullRequest
5 голосов
/ 29 декабря 2011

Беглое гугление не дает ответа, поэтому вопрос:

Обеспечивает ли метод String.Split порядок следования подстрок в соответствии с их положением в исходной строке?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 29 декабря 2011

Согласно тому, что ILSpy показывает на внутренних элементах 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Переменная) всегда обрабатываются в порядке возрастания, и сортировка не выполняется.

В документации MSDN для string.Split также перечислены примеры, результаты которых имеют тот же порядок, что и их порядок в исходной строке.

Как указывает Джим Мишель , это только реализация текущей , которая может измениться.

1 голос
/ 29 декабря 2011

Да, это так.Иначе это было бы довольно бесполезно.

...