我有两个文本框。第一个包含此文本,如图所示 我需要删除每行的前7个字符,然后在第二个框中显示已编辑的文本 第一个数字每次都不同,所以我不能使用这个
RawText.Text = Replace(RawText.Text, "1757792", " ")
TextFilter.Text = RawText.Text
因为数字每行都会改变 有没有办法让按钮删除任何文本7个字符长的所有实例?
1757792 02 08 09 10 15 21 22 29 34 40 44 46 47 48 53 56 58 68 69 71
1757793 01 07 16 20 22 25 30 36 38 39 42 48 49 51 58 66 70 72 79 80
1757794 01 02 07 09 10 18 29 32 35 36 48 53 54 56 62 65 68 69 71 73
1757795 01 02 06 09 12 18 23 27 30 35 43 52 57 59 60 61 62 73 74 76
1757796 01 11 13 14 18 19 22 31 34 41 45 46 54 57 61 70 71 72 79 80
1757797 01 08 10 18 19 21 32 41 43 44 45 54 61 62 64 66 68 73 74 80
1757798 02 03 06 09 10 23 27 28 33 36 38 41 49 53 60 61 64 73 74 80
1757799 02 12 16 34 36 44 51 52 55 57 58 59 64 71 73 75 76 78 79 80
1757800 05 11 13 17 18 19 23 24 27 31 34 38 39 45 48 61 67 73 79 80
1757801 17 23 29 31 35 38 43 45 48 51 56 57 60 64 65 66 67 73 77 78
1757802 05 06 11 14 17 20 21 27 28 29 33 41 45 49 58 66 67 73 79 80
1757803 06 07 10 11 12 19 20 21 25 30 33 35 38 42 46 51 65 66 75 80
1757804 06 14 16 19 20 23 32 42 43 44 48 52 62 67 68 69 71 72 74 78
答案 0 :(得分:1)
您可以使用Substring
之类的字符串方法。如果您确实要删除前7个,可以使用String.Substring
:
Dim txt2Lines = From l In RawText.Lines
Let index = Math.Min(l.Length, 7)
Select l.Substring(index)
txt2.Lines = txt2Lines.ToArray()
这也处理了行也较短的情况。
请注意,它不会删除前导空格,因为它不是前七个字符的一部分。您可以使用l.Substring(index).TrimStart()
。
另一种方法是搜索第一个空格并删除之前的所有内容:
Dim txt2Lines = From l In RawText.Lines
Let index = Math.Max(l.IndexOf(" "), 0)
Select l.Substring(index)
txt2.Lines = txt2Lines.ToArray()
如果找不到子字符串, String.IndexOf
会返回-1
,这就是我使用Math.Max(l.IndexOf(" "), 0)
的原因。在这种情况下,应该采取整行。
答案 1 :(得分:0)
您可以使用String.Split在vbCrLf(换行符)处拆分文本,然后使用String.SubString从索引8开始选择字符串parter,就在那里。
正如GSerg指出的那样,如果您想要替换所有7位数的出现,请尝试以下方法:
Dim ResultString As String
Try
ResultString = Regex.Replace(SubjectString, "\d{7}", "", RegexOptions.Singleline)
Catch ex As ArgumentException
'Syntax error in the regular expression
End Try