Visual Basic计算字符串中子字符串的位置

时间:2016-09-29 17:18:39

标签: vb.net string substring counting basic

所以我试图在Visual Studio中使用Visual Basic创建一个Windows窗体应用程序,其中有一个文本框,您输入一个句子,另一个文本框,您可以在其中输入该句子中的单词,然后是一个按钮,当它是点击在句子中输入的单词的位置输出到标签上。目前,代码计算了一个单词的出现次数,但是我想对它进行调整,以便计算单词出现的位置(例如,输入" Hello hello hello"" hello"输出1 2 3。

目前的代码低于任何帮助将不胜感激。

Public Class Form1
    'first attempt not working
    Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
        Dim input As String = textBox1.Text
        Dim word As String = textBox2.Text
        Dim occurrences As Integer = 0

        Dim intCursor As Integer = 0
        Do Until intCursor >= input.Length
            Dim strCheckThisString As String = Mid(LCase(input), intCursor + 1, (Len(input) - intCursor))

            Dim intPlaceOfWord As Integer = In-Str(strCheckThisString, word)
            If intPlaceOfWord > 0 Then
                occurrences += 1
                intCursor += (intPlaceOfWord + Len(word) - 1)
            Else
                intCursor = input.Length
            End If
        Loop
        Positions.text = occurrences
    End Sub
End Class

1 个答案:

答案 0 :(得分:0)

如果单词始终用空格分隔,则可以先将字符串拆分为单词数组

Dim positions = New List(Of Integer)()
Dim words As String() = input.Split()
For i As Integer = 0 To words.Length - 1
    If words(i).ToLower() = "hello" Then
        positions.Add(i + 1)
    End If
Next

现在列表positions包含句子中hello-words的位置。

String.Split method有重载,允许您指定其他分隔符,例如逗号。还有一个删除空条目的选项。