【问题标题】:Getting multiple index values from an array从数组中获取多个索引值
【发布时间】:2010-07-09 23:43:12
【问题描述】:

我从 A-Z 创建了一个字符串数组,其中包含 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

【问题讨论】:

    标签: vb.net arrays indexing


    【解决方案1】:

    完美编译并运行:

    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
    

    【讨论】:

      【解决方案2】:

      有一百万种方法可以解决这个问题。

      一种解决方案:

      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

      【讨论】:

        【解决方案3】:

        首先想到的是在文本框输入上使用 .split 方法来获取字符数组。对数组中的每个元素执行搜索,将每个匹配项添加到结果数组中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-03
          • 1970-01-01
          • 1970-01-01
          • 2021-09-18
          • 2017-11-08
          • 2019-01-02
          • 1970-01-01
          相关资源
          最近更新 更多