2010-09-08 104 views
8

String数组,我将如何找到一个项目,在下面的代码字符串数组索引:的IndexOf在VB.NET

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

我想知道我怎么会找到的索引项中的一个字符串数组。 (所有的项目都是小写的,所以情况应该没有关系。)

+0

是不是你的样品在做什么? arrayOfItems.IndexOf(string) – Bertvan 2010-09-08 17:17:38

回答

14

这是对Array类的静态(Shared)方法接受实际的数组作为第一个参数,如:

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

MSDN page

+0

这很有效!谢谢! – Eugene 2010-09-08 17:26:04

+0

选择的过载可能是'Array.IndexOf (T [],T)',而不是链接的'Array.IndexOf (T [],Object)'。 – Oded 2010-09-08 17:27:57

+0

@Oded:是的,有点困惑。谢谢。 – 2010-09-08 19:10:54

1

IndexOf将返回传入的项目数组中的索引,如示例的第三行中所示。它是Array类中的静态(共享)方法,其中several overloads - 因此您需要选择正确的方法。

如果数组是填充,具有字符串“项检测”作为那么它的项目之一下面一行将返回指数:

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

假设数组被填充(这是一个例子)...我得到一个错误“Error 重载解析失败,因为没有可访问的'IndexOf'接受这个数量的参数。 – Eugene 2010-09-08 17:20:37

+0

@ user389823 - 答案用正确的代码更新。 – Oded 2010-09-08 17:24:51

+0

你会工作的。感谢您的快速回复= D – Eugene 2010-09-08 17:31:53

-1

踢,你可以使用LINQ

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

然后,您可以访问像这样的项目:

items.First 
+0

你可以这样做,但是即使你不需要索引而不是值,找到完全匹配硬编码字符串的字符串的值也没有意义。 – 2010-09-08 17:56:01

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

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