我在RichTextBox中有一个帐户列表:
username:password|description
username1:password1|description
username3:password3|description3
username4:password5|description6
username1:password3|description5
username2:password4|description5
username2:password3|description3
列表中的行数是任意的。
我想删除每行的"|description"
部分。有什么建议吗?
答案 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