【问题标题】:Find all instances of a word in a string and display them in textbox (vb.net)在字符串中查找单词的所有实例并将它们显示在文本框中(vb.net)
【发布时间】:2020-10-19 16:54:50
【问题描述】:

我有一个包含文本框内容的字符串(非常大)。

我想搜索它并显示这个词的所有出现。此外,我需要搜索结果在实际搜索词之前和之后显示字符串中的一些字符,以获取该词的上下文。

下面的代码是使用 For Each 一个一个地从列表框中获取关键字的代码的一部分。该代码显示单词的第一次出现以及单词前后的字符 - 并停在那里。如果没有找到,它也会显示“no Match for: searched word”。

正如这个问题的主题所述 - 我需要它来搜索整个字符串并显示特定单词的所有匹配项以及周围的字符。

Where = InStr(txtScrape.Text, Search)

If Where <> 0 Then
    txtScrape.Focus()
    txtScrape.SelectionStart = Where - 10
    txtScrape.SelectionLength = Where + 50
    Result = txtScrape.SelectedText
    AllResults = AllResults + Result

Else
    AllResults = AllResults + "No Match for: " & item
End If

【问题讨论】:

    标签: vb.net visual-studio


    【解决方案1】:

    我建议你可以用特殊符号将字符串分割成长句子,比如, : ? .
    Split(Char[])
    可以参考以下代码。

    Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        RichTextBox1.Text = ""
        Dim Index As Integer
        Dim longStr() As String
        Dim str = TextBox3.Text
        longStr = TextBox1.Text.Split(New Char() {CChar(":"), CChar(","), CChar("."), CChar("?"), CChar("!")})
        Index = 0
    
        For Each TheStr In longStr
            If TheStr.Contains(str) Then
                RichTextBox1.AppendText(longStr(Index) & vbCrLf)
            End If
            Index = Index + 1
        Next
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
        TextBox1.Text = "....."
    
    End Sub
    End Class
    

    结果:

    【讨论】:

      【解决方案2】:

      试试这样:

      Dim ArrStr() As String
      Dim Index As Integer
      Dim TheStr As String
      Dim MatchFound As Boolean 
      MatchFound = False
      ArrStr = Split(txtScrape.text," ")
      Index = 1
      For Each TheStr In ArrStr
        If TheStr = Search Then
          Console.WriteLine(Index)
          MatchFound = True
        End If
        Index = Index + 1
      Next
      Console.WriteLine(MatchFound)
      

      在 If 语句中,您将在那里获得索引。如果匹配,则 MatchFound 是布尔值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-30
        • 2022-01-24
        相关资源
        最近更新 更多