“Hi”是第二个标记,而不是第一个。除此之外,参数应该是分隔符和索引,而不是方法本身。
所以你可以使用这个方法:
Public Shared Function SplitByGetAt(input As String, delimiter As String, index As Int32, options As StringSplitOptions) As String
If input Is Nothing Then Throw New ArgumentNullException("input")
If delimiter Is Nothing Then Throw New ArgumentNullException("delimiter")
If delimiter.Length = 0 Then Throw New ArgumentException("Delimiter must be specified", "delimiter")
If index < 0 Then Throw New ArgumentException("Index must be equal or greater than 0", "index")
Dim tokens = input.Split({delimiter}, options)
If index >= tokens.Length Then Return Nothing
Return tokens(index)
End Function
用法:
Dim lstrSource as String = "Hello-Hi"
Dim result As String = SplitByGetAt(lstrSource, "-", 1, StringSplitOptions.None)
' Result: Hi
如果你想让它成为一个扩展方法:
Public Module MyExtensions
<Extension()>
Public Function SplitByGetAt(input As String, delimiter As String, index As Int32, options As StringSplitOptions) As String
If input Is Nothing Then Throw New ArgumentNullException("input")
If delimiter Is Nothing Then Throw New ArgumentNullException("delimiter")
If delimiter.Length = 0 Then Throw New ArgumentException("Delimiter must be specified", "delimiter")
If index < 0 Then Throw New ArgumentException("Index must be greater than 0", "index")
Dim tokens = input.Split({delimiter}, options)
If index >= tokens.Length Then Return Nothing
Return tokens(index)
End Function
End Module
现在可以这样使用了:
lstrSource.SplitByGetAt("-", 1, StringSplitOptions.None)