开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜