2010-09-08 9 views
8

Comment puis-je trouver l'index d'un élément dans le tableau de chaînes dans le code suivant:IndexOf avec tableau de chaînes en VB.NET

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

Je voudrais savoir comment je trouverais l'indice d'un élément dans un tableau de chaînes. (Tous les éléments sont en minuscules, donc le cas ne devrait pas avoir d'importance.)

+0

est-ce pas ce que vous faites dans l'échantillon? arrayOfItems.IndexOf (string) – Bertvan

Répondre

14

Il est un statique (Shared) sur la classe Array que accepte le tableau réel comme premier paramètre, comme:

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

MSDN page

+0

Cela fonctionne! Merci! – Eugene

+0

La surcharge sélectionnée sera probablement 'Array.IndexOf (T [], T)', pas le 'Array.IndexOf lié (T [], Object)' lié. – Oded

+0

@Oded: Oui, j'ai été un peu confus. Merci. –

1

IndexOf retournera l'index dans le tableau de l'élément transmis, comme cela apparaît dans la troisième ligne de votre exemple. C'est une méthode statique (partagée) sur la classe Array, avec several overloads - vous devez donc sélectionner la bonne.

Si le tableau est rempli et a la chaîne « test de l'élément » comme l'un de ses articles la ligne suivante renverra l'index: méthode

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

En supposant que le tableau est rempli (c'était un exemple) ... Je reçois une erreur "Erreur La résolution de surcharge a échoué car aucun 'IndexOf' accessible n'accepte ce nombre d'arguments." – Eugene

+0

@ user389823 - réponse mise à jour avec le code correct. – Oded

+0

Vous allez travailler. Merci pour les réponses rapides = D – Eugene

-1

Pour coups de pied, vous pouvez utiliser LINQ.

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

Vous pouvez ensuite accéder à l'élément comme celui-ci:

items.First 
+0

Vous pouvez le faire, mais trouver la valeur d'une chaîne qui correspond exactement à une chaîne codée en dur serait inutile même si vous n'avez pas besoin de l'index plutôt que de la valeur. –

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

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