views:

39

answers:

3

Hi all, i have created a string array from A-Z, which will contain index 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, the index return should be 0 and 1.

The code below only able to return the index if i enter only 1 letter alphabet. Can someone pls guide me on how to return the index number for many alphabets. Thanks

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(x)
    Next

End Sub
A: 

First thing that comes to mind is to use the .split method on the textbox input into an array of characters then perform your search on each element in the array, adding each match to the result array

Hugh Jeffner
A: 

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

gmale
+1  A: 

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
Leniel Macaferi