2011-12-29 34 views
5

Goolgent lưu loát không đưa ra câu trả lời, do đó, câu hỏi là:Phương thức String.Split có đảm bảo thứ tự trong mảng kết quả không?

Phương thức String.Split có đảm bảo thứ tự kết quả theo vị trí của chúng trong chuỗi ban đầu không?

Cảm ơn.

+0

bây giờ tôi nghĩ rằng nó sẽ là Có – V4Vendetta

+2

Bạn có câu trả lời hay và có lẽ là điều tốt nhất chúng tôi có thể mong đợi. Tuy nhiên, tôi phải chỉ ra rằng chỉ vì việc thực hiện hiện tại đặt mọi thứ theo thứ tự mong đợi, đó không thực sự là một sự bảo đảm. Điều đó nói rằng, nó sẽ là ngu ngốc cho đội BCL để thay đổi thứ tự. Nó sẽ không có ý nghĩa gì cả. –

+0

Cảm ơn nhận xét hữu ích Jim. Không có vấn đề gì thay đổi thứ tự trong String.Split là không, có lẽ nó tốt hơn để tránh mong đợi thứ tự nhất quán từ phương pháp phân chia. – iburlakov

Trả lời

8

Theo nội dung ILSpy hiển thị trên nội bộ của string.Split, câu trả lời là .

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; 
} 

Tất cả các yếu tố (ví dụ: biến array) luôn được xử lý theo thứ tự tăng dần và không xảy ra sắp xếp.

MSDN documentation for string.Split cũng liệt kê các ví dụ có kết quả theo thứ tự như thứ tự của chúng trong chuỗi gốc.

Jim Mischel chỉ ra ở trên, đây chỉ là triển khai hiện tại, điều này có thể thay đổi.

+4

Bằng chứng vững chắc. Và tốc độ tốt đẹp quá. – captncraig

1

Có. Nếu không nó sẽ là khá vô ích.

Các vấn đề liên quan