2010-09-08 18 views
8

¿Cómo puedo encontrar el índice de un elemento de la matriz de cadenas en el siguiente código:IndexOf con array de Strings en VB.NET

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

Me gustaría saber cómo iba a encontrar el índice de una elemento en una matriz de cadenas. (Todos los elementos son minúsculas, por lo que no debería importar.)

+0

No es eso lo que está haciendo en la muestra? arrayOfItems.IndexOf (string) – Bertvan

Respuesta

14

Es un método estático (Shared) en la clase Array que acepta la matriz real como primer parámetro, como:

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

MSDN page

+0

¡Eso funciona! ¡Gracias! – Eugene

+0

La sobrecarga seleccionada probablemente será 'Array.IndexOf (T [], T)', no el 'Array.IndexOf vinculado (T [], Object)'. – Oded

+0

@Oded: Sí, me confundí un poco. Gracias. –

1

IndexOf devolverá el índice en la matriz del elemento pasado, como aparece en la tercera línea de su ejemplo. Es un método estático (compartido) en la clase Array, con several overloads, por lo que debe seleccionar la correcta.

Si la matriz es poblada y tiene la cadena "prueba de elemento" como uno de sus artículos a continuación, la siguiente línea devolverá el índice:

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

Suponiendo que la matriz está poblada (esto fue un ejemplo) ... aparece un error "Error Error de resolución de sobrecarga porque ningún 'IndiceOf' accesible acepta esta cantidad de argumentos." – Eugene

+0

@ user389823 - respuesta actualizada con el código correcto. – Oded

+0

Ye eso funcionará. Gracias por las respuestas rápidas = D – Eugene

-1

por diversión, se puede usar LINQ.

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

A continuación, acceder al ítem de la siguiente manera:

items.First 
+0

Podría hacer eso, pero encontrar el valor de una cadena que coincida exactamente con una cadena codificada no tendría sentido, incluso si no necesitara el índice en lugar del valor. –

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

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