你如何在一个句子中找到一个单词并在visual basic中返回它的位置

时间:2016-04-20 19:14:59

标签: vb.net

例如"我把她的狗带到了我的狗跳进去的湖中#34;我希望程序告诉我在我的例子中位置4和11的位置

2 个答案:

答案 0 :(得分:0)

此功能应该有效:

Private Function FindWord(Text As String, Word As String) As List(Of Integer)
    Dim results As New List(Of Integer)
    Dim target As String = Word.ToLower
    Dim p() As String = Split(Text.ToLower, " ")
    For i As Integer = 0 To p.Length - 1
        If p(i).Contains(target) Then results.Add(i + 1)
    Next
    Return results
End Function

它将输入解析为“单词”数组。然后它使用contains函数来处理标点符号。

您可以这样称呼它:

Dim r As List(Of Integer) = FindWord("my walked her dog down to the lake which my dog jumped in", "dog")

如果字符串包含doghouse,你必须考虑会发生什么。如果您不想这样做,那么必须修改它。在这种情况下,您需要过滤掉标点符号,并在其余部分中查找完全匹配。

Private Function FindWord(Text As String, Word As String) As List(Of Integer)
    Dim results As New List(Of Integer)
    Dim target As String = Word.ToLower
    Dim rgx As New Regex("[^a-z]")
    Dim p() As String = Split(Text.ToLower, " ")
    For i As Integer = 0 To p.Length - 1
        If rgx.Replace(p(i), "") = target Then results.Add(i + 1)
    Next
    Return results
End Function

答案 1 :(得分:0)

使用String.IndexOf

String.IndexOf Method

您还可以使用VB InStr function