将数据粘贴到richtextbox vb.net时自动过滤

时间:2015-06-29 12:46:00

标签: regex vb.net

ex me paste

Phone: 111-111-111
Phone: 222-222-222
Phone: 333-333-333

我想要richtextbox自动过滤器并以richtextbox格式显示

111-111-111
222-222-222
333-333-333

但我的代码将显示在richtexbox

Phone: 111-111-111
Phone: 222-222-222
Phone: 333-333-333111-111-111
222-222-222
333-333-333

我想删除粘贴数据并显示数据过滤器

Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
    For Each m As Match In Regex.Matches(RichTextBox1.Text, getnumber)
        RichTextBox1.Text &= m.Value & Environment.NewLine
    Next
End Sub

Dim getnumber As String = "(?:\d{3}\-){2}\d{3}"

1 个答案:

答案 0 :(得分:0)

问题是,在文本更改后,您将RichTextBox文本与过滤后的文本连接在一起。在您的示例中,以下文本:

Phone: 111-111-111
Phone: 222-222-222
Phone: 333-333-333

添加到RichTextoBox中,然后添加以下文本:

111-111-111
222-222-222
333-333-333

由于您只在每次匹配后添加一个NewLine(例如111-111-111),因此上面的两个字符串将在没有NewLine分隔的情况下显示。

要解决此问题,请添加一个临时字符串变量,该变量将包含"过滤后的文本",在您调用它时,最后将此变量的值设置为您的RichTextBox' s文:

Private getnumber As String = "(?:\d{3}\-){2}\d{3}"

Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
    Dim filteredText As String = ""
    For Each m As Match In Regex.Matches(RichTextBox1.Text, getnumber)
        filteredText &= m.Value & Environment.NewLine
    Next
    ' TrimEnd() will remove the last NewLine
    Me.RichTextBox1.Text = filteredText.TrimEnd()
End Sub