从RichTextBox的列表中删除描述

时间:2018-11-30 19:31:04

标签: vb.net

我在RichTextBox中有一个帐户列表:

username:password|description
username1:password1|description
username3:password3|description3
username4:password5|description6
username1:password3|description5
username2:password4|description5
username2:password3|description3

列表中的行数是任意的。

我想删除每行的"|description"部分。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

使用正则表达式

Dim rx As New System.Text.RegularExpressions.Regex("\|(.+)")
RichTextBox1.Text = rx.Replace(RichTextBox1.Text, "")

这将删除以竖线|开头和包括在内的任意数量的字符。它将与具有任意长度(任意行数)的Text属性的RichTextBox一起使用。

如果只想保留密码,可以进行两次替换

Dim rx As New System.Text.RegularExpressions.Regex("\|(.+)")
RichTextBox1.Text = rx.Replace(RichTextBox1.Text, "")
rx = New Regex("(.+):")
RichTextBox1.Text = rx.Replace(RichTextBox1.Text, "")

只需删除直到:为止的所有内容

以防万一,您也可以使用此密码删除

Dim rx As New System.Text.RegularExpressions.Regex(":(.+)\|")
RichTextBox1.Text = rx.Replace(RichTextBox1.Text, "|") ' or replace with ":"

没有正则表达式?

Dim lines = RichTextBox1.Text.Split(vbLf)
Dim elements = lines.Select(Function(line) line.Split({":"c, "|"c}))
' password
RichTextBox1.Text = String.Join(vbLf, elements.Select(Function(element) element(1)))
' username:password
RichTextBox1.Text = String.Join(vbLf, elements.Select(Function(element) element(0) & ":" & element(1)))
' you get the idea

答案 1 :(得分:0)

将文本拆分为数组,然后将数组中的项目重写到文本框中

 Dim arr1() As String=Split (rtb.Text,VbLf)
 Dim finalstring As String= ""
 For x As Integer=0 to Ubound(arr1) - 1
    Dim arr2 () As String = Split (arr1 (x), "|")
    finalstring += arr2 (0) & vbNewLine
 Next
 rtb.Text=  finalstring

仅显示密码;使用与上述相同的技术

 Dim arr1() As String=Split(rtb.Text,VbLf)
 Dim finalstring As String= ""
 For x As Integer = 0 to Ubound(arr1) - 1
    Dim arr2 () As String = Split (arr1 (x), "|")
          For x As Integer=0 to Ubound(arr2) - 1        
                   Dim arr3 () As String = Split (arr2 (0), ":")
                   finalstring += arr3 (1) & vbNewLine
      Next
 Next
 rtb.Text=  finalstring