正则表达式在文本框而不是消息框中

时间:2014-05-05 17:40:10

标签: regex vb.net

我需要将我提取的文本(使用正则表达式)放在TextBox中,而不是MessageBox

这是我目前的代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim source As String
    Using wc As New WebClient()
        source = wc.DownloadString("http://www.twstats.com/en71/index.php?page=rankings&mode=players")
    End Using

    Dim mcol As MatchCollection = Regex.Matches(source, "page=player&amp;id=\d+"">(.+)</a>")
    For Each m As Match In mcol
        MessageBox.Show(m.Groups(1).Value)
    Next
End Sub

现在我需要在MessageBox中添加TextBox中显示的文字。

我该怎么做?

修改

如果我在循环中使用TextBox而不是MessageBox,则只显示最后提取的值。

1 个答案:

答案 0 :(得分:5)

您需要将中间字符串保存到变量中。当一个字符串相互添加时,一个很好的选择是.NET提供的StringBuilder类。该操作称为string concatenation - 它可用于动态扩展具有新内容的相同字符串。

可能的解决方案可能如下所示:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim source As String
    Using wc As New WebClient()
        source = wc.DownloadString("http://www.twstats.com/en71/index.php?page=rankings&mode=players")
    End Using
    ' save temporarily the different strings
    Dim sb as StringBuilder = new StringBuilder()
    'alternative
    'Dim output as String = String.Empty;
    Dim mcol As MatchCollection = Regex.Matches(source, "page=player&amp;id=\d+"">(.+)</a>")
    For Each m As Match In mcol
        'MessageBox.Show(m.Groups(1).Value)
        ' add every line to the "output"
        sb.AppendLine(m.Groups(1).Value)
        'output = output + Environment.NewLine + m.Groups(1).Value
    Next
    ' show the output = all lines
    textBox.Text = sb.ToString()
    'textBox.Text = output
End Sub

使用您的变量名称重命名textBox。它也可以是RichTextbox控件。我还添加了第二个变体,仅使用字符串变量来实现所需的结果。您可以选择其中一个实现。