2010-09-08 64 views
8

Làm thế nào tôi sẽ tìm thấy những chỉ số của một mục trong mảng chuỗi trong đoạn mã sau:IndexOf với String mảng trong VB.NET

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

Tôi muốn biết làm thế nào tôi sẽ tìm thấy những chỉ số của một mục trong một mảng chuỗi. (Tất cả các mục đều là chữ thường, nên trường hợp không quan trọng.)

+0

Mà không phải là những gì bạn đang làm trong mẫu? arrayOfItems.IndexOf (string) – Bertvan

Trả lời

14

Đó là một (Shared) phương pháp tĩnh trên lớp Array rằng chấp nhận các mảng thực tế như tham số đầu tiên, như:

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

MSDN page

+0

Điều đó có hiệu quả! Cảm ơn! – Eugene

+0

Quá tải được chọn có thể sẽ là 'Array.IndexOf (T [], T)', không liên kết 'Array.IndexOf (T [], Object)'. – Oded

+0

@Oded: Đúng, hơi bối rối. Cảm ơn. –

1

IndexOf sẽ trả về chỉ mục trong mảng của mục được chuyển vào, như xuất hiện trong dòng thứ ba trong ví dụ của bạn. Đây là phương thức tĩnh (được chia sẻ) trên lớp Array, với several overloads - vì vậy bạn cần phải chọn đúng phương thức.

Nếu mảng là dân cư và có chuỗi "kiểm tra mục" là một trong các mục của nó sau đó dòng sau sẽ trở lại với chỉ số:

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

Giả sử mảng được điền (đây là một ví dụ) ... Tôi gặp lỗi "Lỗi Độ phân giải quá tải không thành công vì không thể truy cập 'IndexOf' chấp nhận số đối số này." – Eugene

+0

@ user389823 - câu trả lời được cập nhật với mã đúng. – Oded

+0

Ye sẽ hoạt động. Cảm ơn bạn đã trả lời nhanh chóng = D – Eugene

-1

Đối với đá, bạn có thể sử dụng LINQ.

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

Sau đó bạn sẽ truy cập vào mục như thế này:

items.First 
+0

Bạn có thể làm điều đó, nhưng việc tìm kiếm giá trị của một chuỗi khớp chính xác với một chuỗi được mã hóa cứng sẽ là vô nghĩa ngay cả khi bạn không cần chỉ mục thay vì giá trị. –

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

Array.FindIndex(arr, (Function(c As String) c.StartsWith(strTokenKey))) 
Các vấn đề liên quan