在文本框中搜索字符串后查找字符串
Finding string after searched string in textbox
我一直在开发一个使用套接字连接到交换机并发出命令的应用程序。之后,从开关读回的数据被放入一个文本文件中,并且包含特定字符串的行(对于本例 "GE1"
)被放置在如下文本框中。
GE1/0/1 UP 1G(a) F(a) A 101 To Station 1
GE1/0/2 DOWN auto A A 1 To Station 2
GE1/0/3 DOWN auto A A 1 To Station 3
GE1/0/4 DOWN auto A A 1 To Station 4
GE1/0/5 DOWN auto A A 1 To Station 5
GE1/0/6 DOWN auto A A 1 To Station 6
GE1/0/7 DOWN auto A A 1 To Station 7
GE1/0/8 DOWN auto A A 1 To Station 8
---- More ----[16D [16DGE1/0/9 DOWN auto A A 1 To Station 9
---- More ----[16D [16DGE1/0/10 DOWN auto A A 1 To Station 10
---- More ----[16D [16DGE1/0/11 DOWN auto A A 1 To Station 11
---- More ----[16D [16DGE1/0/12 DOWN auto A A 1 To Station 12
---- More ----[16D [16DGE1/0/13 DOWN auto A A 1 To Station 13
---- More ----[16D [16DGE1/0/14 DOWN auto A A 1 To Station 14
---- More ----[16D [16DGE1/0/15 DOWN auto A A 1 To Station 15
---- More ----[16D [16DGE1/0/16 DOWN auto A A 1 To Station 16
---- More ----[16D [16DGE1/0/17 DOWN auto A A 1 To Station 17
---- More ----[16D [16DGE1/0/18 DOWN auto A A 1 To Station 18
---- More ----[16D [16DGE1/0/19 DOWN auto A A 1 To Station 19
---- More ----[16D [16DGE1/0/20 DOWN auto A A 1 To Station 20
---- More ----[16D [16DGE1/0/21 DOWN auto A A 1 To Station 21
---- More ----[16D [16DGE1/0/22 DOWN auto A A 1 To Station 22
---- More ----[16D [16DGE1/0/23 DOWN auto A A 1 To Station 23
---- More ----[16D [16DGE1/0/24 DOWN auto A A 1 To Station 24
---- More ----[16D [16DGE1/0/25 DOWN auto A A 1 To Station 25
---- More ----[16D [16DGE1/0/26 DOWN auto A A 1 To Station 26
问题如下:我想在 GE1/0/?并将每个单独的文本应用于标签,以便可以在小表格上查看信息。
示例:
Label1 = "UP"
Label2 = "1G(a)
'and so on until it reads to the end of the line before moving to the next line and
'repeating with the next group of labels.
请注意,该信息将显示是否连接到站点。
旁注:我尝试使用 Textbox1.text = Textbox1.text.Replace(" ---- More ----[16D [16D", "")
和 .Trim
,但它不会删除文本。建议?
您有时将其称为 text file
,然后是 textbox
。这似乎是一个多行文本框,因此您应该使用 lines 数组。更好的方法是将文件加载到数组中,对其进行处理,然后 post 到 TextBox 或直接解析它。
为了修剪第一部分,无论第一部分有多长,无论它是否真的是空格或制表符或介于两者之间的其他内容,都会切掉第一部分。
Dim lines = TextBox1.Lines ' or from file
Dim ndx As Integer
For n As Integer = 0 To lines.Length - 1
If lines(n).StartsWith("GE1") = False Then
ndx = lines(n).IndexOf("GE1")
lines(n) = lines(n).Substring(ndx, lines(n).Length - ndx)
End If
Next
TextBox1.Lines = lines
因为这个似乎 或多或少是固定长度的字段,您应该能够在清理行数据后使用您最喜欢的文本解析器将其切碎。我建议将其解析为 class,这样您就可以为任何数据元素取回您想要的任何数据块。不过,作为解析的示例,这会将其分割成 表观 字段并显示在 ListView
中。
Dim ndx As Integer
Dim tmp As String
Dim lvi As ListViewItem
For n As Integer = 0 To lines.Length - 1
If lines(n).StartsWith("GE1") = False Then
ndx = lines(n).IndexOf("GE1")
lines(n) = lines(n).Substring(ndx, lines(n).Length - ndx)
End If
tmp = lines(n)
' col 1 = 10 chars (approx)
lvi = New ListViewItem(tmp.Substring(0, 10).Trim)
tmp = tmp.Substring(10, tmp.Length - 10).Trim()
' col 2 = up to 4 chars
lvi.SubItems.Add(tmp.Substring(0, 4))
tmp = tmp.Substring(4, tmp.Length - 4).Trim()
' col 3 = up to 5 chars "1G(a)"
lvi.SubItems.Add(tmp.Substring(0, 5))
tmp = tmp.Substring(5, tmp.Length - 5).Trim()
' col 4 = up to 4 chars "F(a)"
lvi.SubItems.Add(tmp.Substring(0, 4))
tmp = tmp.Substring(4, tmp.Length - 4).Trim()
lvi.SubItems.Add(tmp.Substring(0, 1))
tmp = tmp.Substring(1, tmp.Length - 1).Trim()
lvi.SubItems.Add(tmp.Substring(0, 3))
tmp = tmp.Substring(3, tmp.Length - 3).Trim()
lvi.SubItems.Add(tmp)
lv1.Items.Add(lvi)
Next
注意:提供的数据示例并不全面,HTML 格式可能有一些变化,因此可能需要调整确切的代码。否则:
我一直在开发一个使用套接字连接到交换机并发出命令的应用程序。之后,从开关读回的数据被放入一个文本文件中,并且包含特定字符串的行(对于本例 "GE1"
)被放置在如下文本框中。
GE1/0/1 UP 1G(a) F(a) A 101 To Station 1
GE1/0/2 DOWN auto A A 1 To Station 2
GE1/0/3 DOWN auto A A 1 To Station 3
GE1/0/4 DOWN auto A A 1 To Station 4
GE1/0/5 DOWN auto A A 1 To Station 5
GE1/0/6 DOWN auto A A 1 To Station 6
GE1/0/7 DOWN auto A A 1 To Station 7
GE1/0/8 DOWN auto A A 1 To Station 8
---- More ----[16D [16DGE1/0/9 DOWN auto A A 1 To Station 9
---- More ----[16D [16DGE1/0/10 DOWN auto A A 1 To Station 10
---- More ----[16D [16DGE1/0/11 DOWN auto A A 1 To Station 11
---- More ----[16D [16DGE1/0/12 DOWN auto A A 1 To Station 12
---- More ----[16D [16DGE1/0/13 DOWN auto A A 1 To Station 13
---- More ----[16D [16DGE1/0/14 DOWN auto A A 1 To Station 14
---- More ----[16D [16DGE1/0/15 DOWN auto A A 1 To Station 15
---- More ----[16D [16DGE1/0/16 DOWN auto A A 1 To Station 16
---- More ----[16D [16DGE1/0/17 DOWN auto A A 1 To Station 17
---- More ----[16D [16DGE1/0/18 DOWN auto A A 1 To Station 18
---- More ----[16D [16DGE1/0/19 DOWN auto A A 1 To Station 19
---- More ----[16D [16DGE1/0/20 DOWN auto A A 1 To Station 20
---- More ----[16D [16DGE1/0/21 DOWN auto A A 1 To Station 21
---- More ----[16D [16DGE1/0/22 DOWN auto A A 1 To Station 22
---- More ----[16D [16DGE1/0/23 DOWN auto A A 1 To Station 23
---- More ----[16D [16DGE1/0/24 DOWN auto A A 1 To Station 24
---- More ----[16D [16DGE1/0/25 DOWN auto A A 1 To Station 25
---- More ----[16D [16DGE1/0/26 DOWN auto A A 1 To Station 26
问题如下:我想在 GE1/0/?并将每个单独的文本应用于标签,以便可以在小表格上查看信息。
示例:
Label1 = "UP"
Label2 = "1G(a)
'and so on until it reads to the end of the line before moving to the next line and
'repeating with the next group of labels.
请注意,该信息将显示是否连接到站点。
旁注:我尝试使用 Textbox1.text = Textbox1.text.Replace(" ---- More ----[16D [16D", "")
和 .Trim
,但它不会删除文本。建议?
您有时将其称为 text file
,然后是 textbox
。这似乎是一个多行文本框,因此您应该使用 lines 数组。更好的方法是将文件加载到数组中,对其进行处理,然后 post 到 TextBox 或直接解析它。
为了修剪第一部分,无论第一部分有多长,无论它是否真的是空格或制表符或介于两者之间的其他内容,都会切掉第一部分。
Dim lines = TextBox1.Lines ' or from file
Dim ndx As Integer
For n As Integer = 0 To lines.Length - 1
If lines(n).StartsWith("GE1") = False Then
ndx = lines(n).IndexOf("GE1")
lines(n) = lines(n).Substring(ndx, lines(n).Length - ndx)
End If
Next
TextBox1.Lines = lines
因为这个似乎 或多或少是固定长度的字段,您应该能够在清理行数据后使用您最喜欢的文本解析器将其切碎。我建议将其解析为 class,这样您就可以为任何数据元素取回您想要的任何数据块。不过,作为解析的示例,这会将其分割成 表观 字段并显示在 ListView
中。
Dim ndx As Integer
Dim tmp As String
Dim lvi As ListViewItem
For n As Integer = 0 To lines.Length - 1
If lines(n).StartsWith("GE1") = False Then
ndx = lines(n).IndexOf("GE1")
lines(n) = lines(n).Substring(ndx, lines(n).Length - ndx)
End If
tmp = lines(n)
' col 1 = 10 chars (approx)
lvi = New ListViewItem(tmp.Substring(0, 10).Trim)
tmp = tmp.Substring(10, tmp.Length - 10).Trim()
' col 2 = up to 4 chars
lvi.SubItems.Add(tmp.Substring(0, 4))
tmp = tmp.Substring(4, tmp.Length - 4).Trim()
' col 3 = up to 5 chars "1G(a)"
lvi.SubItems.Add(tmp.Substring(0, 5))
tmp = tmp.Substring(5, tmp.Length - 5).Trim()
' col 4 = up to 4 chars "F(a)"
lvi.SubItems.Add(tmp.Substring(0, 4))
tmp = tmp.Substring(4, tmp.Length - 4).Trim()
lvi.SubItems.Add(tmp.Substring(0, 1))
tmp = tmp.Substring(1, tmp.Length - 1).Trim()
lvi.SubItems.Add(tmp.Substring(0, 3))
tmp = tmp.Substring(3, tmp.Length - 3).Trim()
lvi.SubItems.Add(tmp)
lv1.Items.Add(lvi)
Next
注意:提供的数据示例并不全面,HTML 格式可能有一些变化,因此可能需要调整确切的代码。否则: