2013-03-23 4 views
1

Мой вопрос довольно прямолинейный, как я могу найти все индексы строки внутри другой строки? Это код, который я написал, но проблема в том, что все, что он делает, возвращает один и тот же индекс несколько раз. Вот оно:
Как я могу найти все индексы строки в другой строке?

public static int[] IndicesOf(this string s, string Search, int StartIndex) 
    { 
     List<int> indices = new List<int>(); 
     int lastIndex = 0; 
     lastIndex = s.IndexOf(Search); 
     while (lastIndex != -1) 
     { 
      indices.Add(lastIndex); 
      lastIndex = s.IndexOf(Search, lastIndex); 
     } 
     return indices.ToArray(); 
    } 

Я не знаю, что случилось с этим кодом. Я думаю, мне может понадобиться продвинуть индекс перед следующим поиском.

ответ

5

Я предполагаю, что вы должны добавить 1 ко второму звонку s.IndexOf.

То есть:

lastIndex = s.IndexOf(Search, lastIndex + 1); 
+0

Все, что я сделал не заметил, что я должен был заранее индекс, спасибо за помощь, это может быть закрыто. – Jake