mcl*_*129 6

我无耻地从这个问题中扯下了这个例子,并将它从C#转换为VB.net.

Public Function GetNthIndex(s As String, t As Char, n As Integer) As Integer
    Dim count As Integer = 0
    For i As Integer = 0 To s.Length - 1
        If s(i) = t Then
            count += 1
            If count = n Then
                Return i
            End If
        End If
    Next
    Return -1
End Function
Run Code Online (Sandbox Code Playgroud)

  • 效率并不羞耻! (3认同)

Met*_*ght 6

这是Linq的一种方法.

Public Function GetNthIndex(searchString As String, charToFind As Char, n As Integer) As Integer
    Dim charIndexPair = searchString.Select(Function(c,i) new with {.Character = c, .Index = i}) _
                                    .Where(Function(x) x.Character = charToFind) _
                                    .ElementAtOrDefault(n-1)
    Return If(charIndexPair IsNot Nothing, charIndexPair.Index, -1)
End Function
Run Code Online (Sandbox Code Playgroud)

用法:

Dim searchString As String = "Assessment"
Dim index As Integer = GetNthIndex(searchString, "s", 4) 'Returns 5
Run Code Online (Sandbox Code Playgroud)