Получение нескольких значений индекса из массива - PullRequest
3 голосов
/ 10 июля 2010

Я создал массив строк из AZ, который будет содержать индексы от 0-25.

Затем у меня есть текстовое поле, и когда я ввожу текст в текстовое поле, как я могу получить индексный номермассив, связанный с введенным мной текстом?

Например, я ввожу "AB" в текстовое поле, и возвращаемое значение индекса должно быть 0 и 1.

Код ниже может только вернутьиндекс, если я введу только одну букву алфавита.Как вернуть индексный номер для многих алфавитов?

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

Ответы [ 3 ]

1 голос
/ 10 июля 2010

Скомпилировано и работает отлично:

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

Будет отображаться в окне сообщения соответственно:

'l   e  n   i  e  l
 11, 4, 13, 8, 4, 11
0 голосов
/ 10 июля 2010

Есть миллион способов приблизиться к этому.

Одно решение:

1) Получить текст

Dim theText = TextBox2.Text

2) Для каждой буквы в этом тексте получите номер (и отобразите его в виде сообщения

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

При условии, что компилируется, он должен всплывать каждое число, один за другим. Я использовал ту же функцию, которую вы использовали для перевода символа (т.е. получил результат). Есть и другие способы сделать это, я просто хотел ответить на ваш главный вопрос, указав, что вы можете перебирать все символы в строке.

Надеюсь, это поможет,

- gMale

0 голосов
/ 10 июля 2010

Первое, что приходит на ум, - это использовать метод .split для ввода текстового поля, чтобы получить массив символов. Выполните поиск по каждому элементу в массиве, добавив каждое совпадение в массив результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...