Getting multiple index values from an array
I have created a string array from A-Z, which will contain indexes from 0-25.
Then I have a textbox and when I enter text into the textbox, how can I get the index number of the array associated with the text I entered?
For example, I enter "AB" into the textbox, and the index return should be 0 and 1.
The code below is only able to return the index if I enter only one letter alphabet. How do I return the index number for many alphabets?
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim abc(25) As String
abc(0) = "a"
abc(1) = "b"
abc(2) = "c"
abc(3) = "d"
abc(4) = "e"
abc(5) = "f"
abc(6) = "g"
abc(7) = "h"
abc(8) = "i"
abc(9) = "j"
abc(10) = "k"
abc(11) = "l"
abc(12) = "m"
abc(13) = "n"
abc(14) = "o"
abc(15) = "p"
abc(16) = "q"
abc(17) = "r"
abc(18) = "s"
abc(19) = "t"
abc(20) = "u"
abc(21) = "v"
abc(22) = "w"
abc(23) = "x"
abc(24) = "y"
abc(25) = "z"
Dim result = abc.Where(Function(a) a.Contains(TextBox2.Text)).Select(Function(s) Array.IndexOf(abc, s)).ToArray()
Dim x As Integer
For Each x In result
MsgBox(开发者_如何学Cx)
Next
End Sub
Compiled and running perfectly:
Module Module1
Sub Main()
Test("Leniel")
End Sub
Sub Test(ByVal text As String)
Dim alphabet() As String = {"a", "b", "c", "d", "e",
"f", "g", "h", "i", "j",
"k", "l", "m", "n", "o",
"p", "q", "r", "s", "t",
"u", "v", "w", "x", "y", "z"}
Dim indexes = From letter In text.ToCharArray() _
Select Array.IndexOf(alphabet, letter.ToString().ToLower())
Dim i As Integer
For Each i In indexes
MsgBox(i)
Next
End Sub
End Module
It will show in the message box respectively:
'l e n i e l
11, 4, 13, 8, 4, 11
There are a million ways to approach this.
One solution:
1) Get the text
Dim theText = TextBox2.Text
2) For each letter in that text, get the number (and display it as a message
Dim c As Char
For Each c In theText
MsgBox(translateCharacter(c))
Next
Public Function translateCharacter(ByVal c As Char) As Integer
translateCharacter = abc.Where(Function(a) a.Contains(c)).Select(Function(s) Array.IndexOf(abc, s)).ToArray()
End Function
Provided that compiles, it should pop up each number, one by one. I used the same function you were using to translate the character (i.e. get the result). There are other ways to do this, I just wanted to address your main question by point out that you can iterate over all the characters in the string.
I hope that helps,
--gMale
The first thing that comes to mind is to use the .split method on the textbox input to get an array of characters. Perform your search on each element in the array, adding each match to the result array.
I will "attack" that problem using a dictionary rather than an array. Each letter of the alphabet is a key with value corresponding to an index.
精彩评论