我想在VB.NET中搜索字符串的特定部分。例如,在下面的字符串中,我想要以下部分:" Tennis"。
Football ... Basketball ... Tennis ... Golf
我不确定如何裁掉琴弦的其他部分,以便我留下网球。谢谢:))
答案 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