Joe Duffy's Blog ngụ ý sử dụng string.Substring
hiệu quả hơn string.Split
.String.Substring hiệu quả hơn String.Split như thế nào?
Tôi không biết liệu phương pháp Substring
không phân bổ một chuỗi mới hay nó chỉ hiệu quả hơn vì nó không tạo ra phân bổ không cần thiết. Bạn có thể vui lòng giải thích cách nó hiệu quả hơn và hiển thị một ví dụ.
Tôi hiểu ví dụ đầu tiên của anh ấy khi tạo mảng và sau đó xử lý từng chuỗi trong mảng.
string str = ...;
string[] substrs = str.Split(',');
foreach (string subtr in substrs) {
Process(substr);
}
Làm thế nào là hiệu quả hơn sau
string str = ...;
int lastIndex = 0;
int commaIndex;
while ((commaIndex = str.IndexOf(',', commaIndex)) != -1) {
Process(substr, lastIndex, commaIndex);
lastIndex = commaIndex + 1;
Những gì tôi thấy đang sử dụng String.IndexOf
để tìm ra chỉ số của dấu phẩy sau đó xử lý chuỗi. Tôi cho rằng anh ta định sử dụng String.Substring
để trích xuất dữ liệu trong quá trình xử lý của mình. Một trong những ý kiến dưới đây cho thấy anh ta có thể kéo nhân vật theo nhân vật. Liệu anh ta có kéo nhân vật cho đến khi anh ta chạm vào dấu phẩy tiếp theo có thể xây dựng một mảng char?
Có sting.Index được sử dụng để tìm chỉ mục dấu phẩy nhưng bên trong phương thức xử lý giả thuyết của bạn, bạn vẫn cần phải tạo chuỗi con để trích xuất dữ liệu trong các chỉ mục đó. đúng? –
Tôi đã sửa chữa - ví dụ thực sự gây nhầm lẫn – BrokenGlass
"Có các API bom mìn ẩn chứa ở đó, như String.Split và String.Substring" ngụ ý rằng anh ta nghĩ 'Chuỗi con không hiệu quả. Và tôi nghĩ rằng "String có, sau khi tất cả, có một chỉ mục. Và nó an toàn kiểu! Vì vậy, tại chỗ phân tích ít nhất sẽ không dẫn đến tràn bộ đệm" ngụ ý anh ta dự định bạn truy cập ký tự chuỗi con theo ký tự, thay vì bằng cách sử dụng 'Chuỗi con'. – Blorgbeard