清除富文本框并保留某些字符串
Clear rich text box and leave certain strings
我的富文本框中有很多数据,我想做的是清除它,只留下以 AZ 开头的单词,这可能吗?我尝试了以下编码,但它失败了
String cannot be of zero length.
Parameter name: oldValue
密码是
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
Dim str As String
str = rtbjw.Text
If Not str.Contains("AZ") = True Then
rtbjw.Text = rtbjw.Text.Replace("", "").Trim()
End If
End Sub
示例文本
AZ0034 14 AZ0034L1 ART3 LTD 0 srv01 000_00000_LTD ECR 0 - BE Active -
AZ0003 10 AZ0003L1 ART3 LTD 0 srv01 000_00000_LTD ECR 8 - BE Active -
AZ0008 9 AZ0008L1 ART3 LTD 0 srv01 000_00000_LTD ECR 12 - BE Active -
AZ0010 8 AZ0010L1 ART3 LTD 0 srv01 000_00000_LTD ECR 7 - BE Active -
AZ0009 7 AZ0009L1 ART3 LTD 0 srv01 000_00000_LTD ECR 7 - BE Active -
AZ0004 2 AZ0004L1 ART3 LTD 0 srv01 000_00000_LTD ECR 3 - BE Active -
AZ0006 1 AZ0006L1 ART3 NONE - - --- ECR 7 - BE Active -
AZ0007 - AZ0007L1 ART3 NONE - - JO ECR 8 - BE Active -
rtbjw.Text = rtbjw.Text.Replace("", "").Trim()
只会用空字符串替换在 rtjbw.Text
中找到的空字符串。我确定您注意到它实际上没有做任何事情,因为没有任何空字符串可以替换。无论如何,如果您只想保留以 "AZ" 开头的单词,那么这不是正确的方法。很少有不同的方法(包括 RegEx)会起作用。但是,我对 RegEx 不够熟悉,无法提供使用它的解决方案,但这同样有效。
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim strArr() As String = rtbjw.Text.Split(" ")
rtbjw.Clear()
For Each item In strArr
If item.StartsWith("AZ") Then
If rtbjw.Text.Length > 0 Then rtbjw.Text &= " "
rtbjw.Text &= item
End If
Next
End Sub
我在这里所做的是获取 rtbjw
的内容并将其分配给一个字符串数组,用 space 拆分它。这将创建一个 "words" 的列表(假设每个单词确实由 space 分隔)。因为我们现在在文本框中有一个包含所有 "words" 的列表,所以文本框中的所有文本都被清除了。
然后,在 for 循环中,我查看单词列表中的每个项目,如果它以 "AZ" 开头(使用 StartsWith()
方法),我正在做两件事情。首先,如果文本框中的文本长度大于0,我在当前文本框中的内容中添加一个space(以分隔单词,大于0检查是为了防止添加space 作为第一个字符),然后将以 "AZ" 开头的单词添加到文本框中文本的末尾。
编辑:因为我很好奇并且正在学习如何使用它们,所以我还修改了它以使用 LINQ 查询。做的事情基本相同,但不是将文本分配给字符串数组,而是将文本存储在 queryResult 变量中。见下文。
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim queryResults As IEnumerable = From word In rtbjw.Text.Split(" ")
Where word.StartsWith("AZ")
rtbjw.Clear()
For Each word In queryResults
If rtbjw.TextLength > 0 Then rtbjw.Text &= " "
rtbjw.Text &= word
Next
End Sub
我的富文本框中有很多数据,我想做的是清除它,只留下以 AZ 开头的单词,这可能吗?我尝试了以下编码,但它失败了
String cannot be of zero length.
Parameter name: oldValue
密码是
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
Dim str As String
str = rtbjw.Text
If Not str.Contains("AZ") = True Then
rtbjw.Text = rtbjw.Text.Replace("", "").Trim()
End If
End Sub
示例文本
AZ0034 14 AZ0034L1 ART3 LTD 0 srv01 000_00000_LTD ECR 0 - BE Active -
AZ0003 10 AZ0003L1 ART3 LTD 0 srv01 000_00000_LTD ECR 8 - BE Active -
AZ0008 9 AZ0008L1 ART3 LTD 0 srv01 000_00000_LTD ECR 12 - BE Active -
AZ0010 8 AZ0010L1 ART3 LTD 0 srv01 000_00000_LTD ECR 7 - BE Active -
AZ0009 7 AZ0009L1 ART3 LTD 0 srv01 000_00000_LTD ECR 7 - BE Active -
AZ0004 2 AZ0004L1 ART3 LTD 0 srv01 000_00000_LTD ECR 3 - BE Active -
AZ0006 1 AZ0006L1 ART3 NONE - - --- ECR 7 - BE Active -
AZ0007 - AZ0007L1 ART3 NONE - - JO ECR 8 - BE Active -
rtbjw.Text = rtbjw.Text.Replace("", "").Trim()
只会用空字符串替换在 rtjbw.Text
中找到的空字符串。我确定您注意到它实际上没有做任何事情,因为没有任何空字符串可以替换。无论如何,如果您只想保留以 "AZ" 开头的单词,那么这不是正确的方法。很少有不同的方法(包括 RegEx)会起作用。但是,我对 RegEx 不够熟悉,无法提供使用它的解决方案,但这同样有效。
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim strArr() As String = rtbjw.Text.Split(" ")
rtbjw.Clear()
For Each item In strArr
If item.StartsWith("AZ") Then
If rtbjw.Text.Length > 0 Then rtbjw.Text &= " "
rtbjw.Text &= item
End If
Next
End Sub
我在这里所做的是获取 rtbjw
的内容并将其分配给一个字符串数组,用 space 拆分它。这将创建一个 "words" 的列表(假设每个单词确实由 space 分隔)。因为我们现在在文本框中有一个包含所有 "words" 的列表,所以文本框中的所有文本都被清除了。
然后,在 for 循环中,我查看单词列表中的每个项目,如果它以 "AZ" 开头(使用 StartsWith()
方法),我正在做两件事情。首先,如果文本框中的文本长度大于0,我在当前文本框中的内容中添加一个space(以分隔单词,大于0检查是为了防止添加space 作为第一个字符),然后将以 "AZ" 开头的单词添加到文本框中文本的末尾。
编辑:因为我很好奇并且正在学习如何使用它们,所以我还修改了它以使用 LINQ 查询。做的事情基本相同,但不是将文本分配给字符串数组,而是将文本存储在 queryResult 变量中。见下文。
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim queryResults As IEnumerable = From word In rtbjw.Text.Split(" ")
Where word.StartsWith("AZ")
rtbjw.Clear()
For Each word In queryResults
If rtbjw.TextLength > 0 Then rtbjw.Text &= " "
rtbjw.Text &= word
Next
End Sub