2010-09-08 17 views
8

Jak znajdę indeks elementu w tablicy ciągów w następującym kodzie:IndexOf z tablicy ciągów w VB.NET

Dim arrayofitems() as String 
Dim itemindex as UInteger 
itemindex = arrayofitems.IndexOf("item test") 
Dim itemname as String = arrayofitems(itemindex) 

Chciałbym wiedzieć, jak znajdę indeks element w tablicy łańcuchowej. (Wszystkie elementy są pisane małymi literami, więc sprawa nie powinna mieć znaczenia.)

+0

nie jest to, że to, co robisz w próbce? arrayOfItems.IndexOf (string) – Bertvan

Odpowiedz

14

jest to (Shared) metoda statyczna od klasy Array że przyjmuje rzeczywistą tablicę jako pierwszy parametr, jak:

Dim arrayofitems() As String 
Dim itemindex As Int32 = Array.IndexOf(arrayofitems, "item test") 
Dim itemname As String = arrayofitems(itemindex) 

MSDN page

+0

To działa! Dzięki! – Eugene

+0

Wybranym przeciążeniem będzie prawdopodobnie 'Array.IndexOf (T [], T)', a nie połączony 'Array.IndexOf (T [], Object)'. – Oded

+0

@Oded: Tak, trochę się zdezorientowałem. Dzięki. –

1

IndexOf zwróci indeks w tablicy przekazanego elementu, zgodnie z trzecim wierszem przykładu. Jest to metoda statyczna (współdzielona) w klasie Array, z several overloads - więc musisz wybrać poprawną.

Jeśli tablica jest pusta i ma ciąg „test punkt” jako jeden z jej elementów następnie dodaje linia powróci indeksu:

itemindex = Array.IndexOf(arrayofitems, "item test") 
+0

Zakładając, że tablica jest wypełniona (był to przykład) ... Wystąpił błąd "Błąd Rozładowanie nie powiodło się, ponieważ niedostępny" IndexOf "akceptuje tę liczbę argumentów." – Eugene

+0

@ user389823 - odpowiedź zaktualizowana poprawnym kodem. – Oded

+0

Ye, który zadziała. Dzięki za szybkie odpowiedzi = D – Eugene

-1

dla zabawy, można użyć LINQ.

Dim items = From s In arrayofitems _ 
     Where s = "two" _ 
     Select s Take 1 

Można by wtedy uzyskać dostęp do elementu takiego:

items.First 
+0

Możesz to zrobić, ale znalezienie wartości ciągu, który dokładnie pasuje do zakodowanego ciągu znaków, byłoby bezcelowe, nawet jeśli nie potrzebujesz indeksu, a nie jego wartości. –

2
Array.FindIndex(arr, (Function(c As String) c=strTokenKey) 

Array.FindIndex(arr, (Function(c As String) c.StartsWith(strTokenKey)))