2013-05-14 24 views
15

Próbuję więc pobrać indeks pierwszego elementu, który zaczyna się od "cokolwiek", nie jestem pewien, jak to zrobić.Jak znaleźć indeks ciągu na liście

Moja próba (lol):

List<string> txtLines = new List<string>(); 
//Fill a List<string> with the lines from the txt file. 
foreach(string str in File.ReadAllLines(fileName)) { 
    txtLines.Add(str); 
} 
//Insert the line you want to add last under the tag 'item1'. 
int index = 1; 
index = txtLines.IndexOf(npcID); 

Tak wiem, że to nie jest naprawdę coś, a to jest błędne, ponieważ wydaje się szuka pozycji, która jest równa npcID zamiast linii, która zaczyna się od tego.

+0

faktycznie wyświetla indeks ciągu znaków. Sprawdź http://www.dotnetperls.com/indexof – Sunny

+0

W czym dokładnie polega problem? Jeśli 'txtLines' jest polem tekstowym, po prostu wykonaj' txtLines.Text.IndexOf (ncpID) '. – Matthew

+0

Niestety, naprawiliśmy go, z jakiegoś powodu kod nie został wklejony. Oh dobrze naprawione –

Odpowiedz

40

Jeśli chcesz „startswith” można użyć FindIndex

int index = txtLines.FindIndex(x => x.StartsWith("whatever")); 
+1

Dzięki, zadziałało jak wdzięk –

2

jeśli txtLines jest Typ listy, trzeba umieścić go w pętli, po czym pobrać wartość

int index = 1; 
foreach(string line in txtLines) { 
    if(line.StartsWith(npcID)) { break; } 
    index ++; 
} 
+0

Możesz chcieć wyjść z pętli w pewnym momencie, gdy znajdziesz ciąg. – siride

+0

thx za swoje wejście, mam zmienić kod – dArc

+0

to mi pomóc. dzięki. :) –

-1

Załóżmy, że txtLines zostało wypełnione, teraz:

List<int> index = new List<int>(); 
for (int i = 0; i < txtLines.Count(); i++) 
     { 
      index.Add(i); 
     } 

Teraz masz listę int zawierającą indeks wszystkie elementy txtLines. możesz zadzwonić pierwszy element z List<int> index tym kodem: index.First();

Powiązane problemy