VB.NET搜索字符串

时间:2016-03-16 23:31:07

标签: vb.net string

我想在VB.NET中搜索字符串的特定部分。例如,在下面的字符串中,我想要以下部分:" Tennis"。

Football ... Basketball ... Tennis ... Golf

我不确定如何裁掉琴弦的其他部分,以便我留下网球。谢谢:))

2 个答案:

答案 0 :(得分:1)

下面的解决方案是我的想法...你可以在你想要的任何类中使用这个函数,你传递它想要检查的字符串,我们应该拆分什么,最后我们想要得到什么位置......我希望你不介意Linq和lamda表达的......

 ''' <summary>
''' Return's word at index if it exist.
''' </summary>
''' <param name="Sentence"></param>
''' <param name="SplitString"></param>
''' <param name="Position"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function GetWordAtPosition(ByVal Sentence As String, ByVal SplitString As String, ByVal Position As Integer) As String
    Dim ReturnWord As String = String.Empty
    Dim ListPossibleWords As New List(Of String)

    Try
        'First see if we have a string, it's not empty or null, we have something to split on, and the actual word
        'at the given position...
        If Sentence IsNot Nothing AndAlso Not String.IsNullOrEmpty(Sentence) AndAlso SplitString IsNot Nothing AndAlso Not String.IsNullOrEmpty(SplitString) AndAlso Position > -1 Then
            'Trim the string out...
            Sentence = Sentence.Trim.Replace(" ", String.Empty)

            'Does the string have what we need to split on?
            If Sentence.Contains(SplitString) Then
                'Split all this into a List(Of String)...
                With ListPossibleWords
                    .AddRange(Strings.Split(Sentence, SplitString.ToCharArray))
                    .RemoveAll(Function(s As String) As Boolean
                                   Return s.Equals(SplitString)
                               End Function)
                End With

                'Do we have a list now?
                If ListPossibleWords.Count >= Position Then ReturnWord = ListPossibleWords.Item(Position - 1)

            End If

        End If

        Return ReturnWord
    Catch ex As Exception
        Return ReturnWord
    End Try
End Function

答案 1 :(得分:0)

以下可能会做你想要的。

Module VBModule

    Sub Main()
        Dim sSearchIn As String = "Football ... Basketball ... Tennis ... Golf"
        Dim sSearchFor As String = " ... " 
        Dim lItemPosition As Long = 3
        Dim lSkipLen As Long = sSearchFor.Length

        Dim lIndex As Long
        Dim sTemp as String

        Dim i As Long



        ' Mid is one-based, IndexOf is zero-based
        sTemp = sSearchIn
        For lIndex = 1 To lItemPosition - 1
            sTemp = Mid (sTemp, sTemp.IndexOf(sSearchFor) + 1 + lSkipLen)
        Next lIndex

        i = sTemp.IndexOf(sSearchFor)

        If (i > 0) Then
            Console.WriteLine(Left (sTemp, i))
        Else
            Console.WriteLine(sTemp)
        End If
    End Sub

End Module