Vb.net 我必须为这个字母实例函数传递什么参数

Vb.net 我必须为这个字母实例函数传递什么参数,vb.net,Vb.net,我需要做一个函数,计算从a到z的字符串中每个字母的实例,并将其存储到整数数组中。我很不擅长使用并行阵列,所以请容忍我,谢谢。到目前为止,我已经: Function Letter(ByVal strTest As String) As Integer() Const intMaxLetters As Integer = 25 Dim intLetters(intMaxLetters) As Integer Dim value As String = "abcdefghij

我需要做一个函数,计算从a到z的字符串中每个字母的实例,并将其存储到整数数组中。我很不擅长使用并行阵列,所以请容忍我,谢谢。到目前为止,我已经:

 Function Letter(ByVal strTest As String) As Integer()
    Const intMaxLetters As Integer = 25
    Dim intLetters(intMaxLetters) As Integer
    Dim value As String = "abcdefghijklmnopqrstuvwxyz"
    Dim chrLetters() As Char = value.ToCharArray
    Dim intCounter As Integer = 0
    For intCounter = 0 To strTest.Length - 1
        Dim c As Char = strTest.Substring(intCounter, 1)
        If c >= chrLetters(0) And c <= chrLetters(25) Then
            **intLetters()** += 1
        End If
    Next
    Return intLetters
End Function
函数字母(ByVal strTest作为字符串)作为整数()
常量intMaxLetters为整数=25
将intLetters(intMaxLetters)调整为整数
尺寸值为String=“abcdefghijklmnopqrstuvxyz”
Dim chrLetters()作为Char=value.tocharray
Dim intCounter作为整数=0
对于intCounter=0到标准测试长度-1
Dim c As Char=strTest.子字符串(intCounter,1)

如果c>=chrLetters(0)和c来回答您的特定问题,则intLetters数组的索引是字符的ASCII值和“a”的ASCII值之间的差值

我还将通过以下两种方式简化您的代码:

  • 您可以使用
    Char.IsLower
    方法检查字符是否为小写字母,而不是创建包含所有小写字母的字符串
  • 您可以使用For/Each循环遍历字符串中的所有字符(字符串可以被视为字符数组)
这里是简化的函数

Function Letter(strTest As String) As Integer()
    Dim intLetters(25) As Integer
    For Each c As Char In strTest 'use strTest.ToLower if you don't care about the case of the letter
        If Char.IsLower(c) Then intLetters(Asc(c) - Asc("a"c)) += 1
    Next
    Return intLetters
End Function

为了回答您的特定问题,intLetters数组的索引是字符的ASCII值与“a”的ASCII值之间的差值

我还将通过以下两种方式简化您的代码:

  • 您可以使用
    Char.IsLower
    方法检查字符是否为小写字母,而不是创建包含所有小写字母的字符串
  • 您可以使用For/Each循环遍历字符串中的所有字符(字符串可以被视为字符数组)
这里是简化的函数

Function Letter(strTest As String) As Integer()
    Dim intLetters(25) As Integer
    For Each c As Char In strTest 'use strTest.ToLower if you don't care about the case of the letter
        If Char.IsLower(c) Then intLetters(Asc(c) - Asc("a"c)) += 1
    Next
    Return intLetters
End Function

如果它小于最小值,大于最大值,你就不会在任何地方存储任何东西,对吗?顺便说一句,value是16个字符不是25对不起,我是说a到z,让我来解决这个问题,最小值和最大值
Dim lcounts=str.ToLower.tocharray.GroupBy(函数(g)g)。选择(函数(s)New With{.Key=s(0),.Count=s.Count})。ToArray()
如果它小于最小值,大于最大值,你就什么都不存储,对吗?顺便说一句,value是16个字符,不是25个对不起,我是说a到z,让我来解决这个问题,最小值和最大值
Dim lcounts=str.ToLower.ToCharArray.GroupBy(函数(g)g)。选择(函数(s)New With{.Key=s(0),.Count=s.Count})。ToArray()