我需要将我提取的文本(使用正则表达式)放在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&id=\d+"">(.+)</a>")
For Each m As Match In mcol
MessageBox.Show(m.Groups(1).Value)
Next
End Sub
现在我需要在MessageBox
中添加TextBox
中显示的文字。
我该怎么做?
修改
如果我在循环中使用TextBox
而不是MessageBox
,则只显示最后提取的值。
答案 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&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
控件。我还添加了第二个变体,仅使用字符串变量来实现所需的结果。您可以选择其中一个实现。