Tôi có chuỗi lớn cần phân tích và tôi cần tìm tất cả các phiên bản của extract"(me,i-have lots. of]punctuation
và lưu chỉ mục của từng chuỗi vào danh sách.Tìm tất cả các vị trí của chuỗi con trong một chuỗi lớn hơn trong C#
Vì vậy, hãy nói đoạn chuỗi này ở đầu và giữa của chuỗi lớn hơn, cả hai chuỗi sẽ được tìm thấy và chỉ mục của chúng sẽ được thêm vào List
. và List
sẽ chứa 0
và chỉ mục khác bất kể nó là gì.
Tôi đã chơi xung quanh và string.IndexOf
hiện gần như những gì tôi đang tìm kiếm và tôi đã viết một số mã - nhưng nó không hoạt động và tôi không thể tìm ra chính xác những gì sai :
List<int> inst = new List<int>();
int index = 0;
while (index < source.LastIndexOf("extract\"(me,i-have lots. of]punctuation", 0) + 39)
{
int src = source.IndexOf("extract\"(me,i-have lots. of]punctuation", index);
inst.Add(src);
index = src + 40;
}
inst
= danh sáchsource
= chuỗi lớn
Bất kỳ ý tưởng nào tốt hơn?
Tại sao không sử dụng IEnumerable và chỉ số lợi nhuận thay vì danh sách chỉ mục? –
m0sa
@ m0sa: Tốt. Thêm một phiên bản khác chỉ để cho niềm vui của nó. –
Việc sử dụng năng suất có bất kỳ tỷ lệ nào trong hiệu suất không? Việc thu hồi của các đối tượng trở nên không đồng bộ hoặc lười biếng? Os là nó chỉ cú pháp đường và cả hai mã đều giống nhau? – PedroC88