在VB.NET中使用String数组的IndexOf方法

10

在下面的代码中,我如何找到字符串数组中一个元素的索引:

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

我想知道如何在字符串数组中找到一个元素的索引。(所有元素都是小写的,所以大小写不应该有影响。)


在示例中,这不就是你正在做的吗?arrayOfItems.IndexOf(string) - Bertvan
4个回答

21

这是Array类的静态(Shared)方法,它将实际的数组作为第一个参数传入,例如:

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

MSDN页面


所选的重载可能是 Array.IndexOf<T>(T[], T),而不是相关的 Array.IndexOf<T>(T[], Object) - Oded
@Oded:是的,有点混淆了。谢谢。 - Hans Olsson
1
旧帖子,但对于任何找到它的人,请注意使用此函数时要谨慎,因为它只会返回数组中遇到的第一个具有传递值的项目的索引。因此,如果您想查找具有相同值的不同项,则这将无法为您工作。但是,如果保证所有值都是唯一的,那么它的效果非常好。 :) - Chiramisu

2
IndexOf方法会返回传入项在数组中的索引,就像你示例中第三行所展示的那样。它是Array类上的静态(共享)方法,有多个重载版本,因此你需要选择正确的一个。
如果数组已经填充,并且其项之一为字符串“item test”,则以下代码将返回该项的索引:
itemindex = Array.IndexOf(arrayofitems, "item test")

1
假设数组已经被填充(这只是一个例子)...我收到了一个错误信息:“错误6:重载解析失败,因为没有可访问的'IndexOf'接受此数量的参数。” - Eugene

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

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

-1

如果想要尝试一下,你可以使用LINQ

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

然后您可以像这样访问该项:

items.First

你可以这样做,但是找到一个与硬编码字符串完全匹配的字符串值即使不需要索引而不是该值也是毫无意义的。 - Joel Mueller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接