将字符串拆分为 4 个数组 VB.NET
Split string into 4 arrays VB.NET
所以我基本上有一个超级简单的宏程序用来记录鼠标点击。每次用户单击时,它都会在 4 个列表框(Click、MouseX、Mouse Y、Time)中的每一个中添加一个新行。
我希望能够保存我创建的宏,因为我不喜欢一遍又一遍地重新创建它们...
我做了一个保存功能,将 4 个列表框中的所有数据保存到一个如下所示的文本文件中:
1
1
1
1
END!~
1020
1032
1134
1129
END!~
611
670
668
602
END!~
32
62
93
131
END!~
我可以导入整个文本文件并用“~”拆分它,这样就得到了数组 (3),如下所示:
Dim bigstringy = System.IO.File.ReadAllText("C:\Users\llooker\Desktop\Macro Scripts\Macro1.txt")
Dim strarr() As String
strarr = bigstringy.Split("~")
我尝试使用
Listbox1.Items.addRange(strarr(0))
Listbox2.Items.addRange(strarr(1))
但这给了我一个错误....
如何将字符串拆分为 4 个单独的数组,然后将它们用作每个单独列表框的范围?
我正在努力实现这一点:
LISTBOX1:
1
1
1
1
END!
LISTBOX2:
1020
1032
1134
1129
END!
LISTBOX3:
611
670
668
602
END!
LISTBOX4:
32
62
93
131
END!
有时简单的 for-next 循环更容易理解和使用
Dim bigstringy = System.IO.File.ReadAllText("C:\Users\llooker\Desktop\Macro Scripts\Macro1.txt")
Dim strarr() As String
strarr = bigstringy.Split(new string() {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
Dim blocks = strarr.Length \ 4
for x as Integer = 0 to blocks
Listbox1.Items.Add(strarr(x).TrimEnd("~"c))
Listbox2.Items.Add(strarr(x + (blocks * 1)).TrimEnd("~"c))
Listbox3.Items.Add(strarr(x + (blocks * 2)).TrimEnd("~"c))
Listbox4.Items.Add(strarr(x + (blocks * 3)).TrimEnd("~"c))
Next
你有 4 个列表,你为每个列表写了一个项目块,所以在换行处拆分你的文本可以计算遍历数组所需的迭代次数。在每次迭代中,您读取列表的数据块,这些数据块现在按块的大小均匀分隔,并将正确的数据集添加到列表中。
使用这种方法,当您将列表框项目写入文件时,您可以删除 END!
书签后的 TILDE (~)
字符。
如果你这样做,那么你也可以删除我需要添加 4 次的 TrimEnd
来处理这个不必要的(现在)分隔符。
请记住,如果不是按顺序写入每个列表框数据,而是在四个列表框中用逗号分隔每个值,在同一索引处写一行,这可能会简化很多。
例如:
1,1020,611,32
1,1032,670,62
1,1134,668,93
1,1129,602,131
尝试
Listbox1.Items.addRange(Split(strarr(0), vbCrLf))
Listbox2.Items.addRange(Split(strarr(1), vbCrLf))
给你好人类:
Private Sub AddValuesToListBoxes()
Dim count = 0
For Each list In Split(IO.File.ReadAllText("c:\values.txt"), "~" & vbCrLf)
CType(Controls("ListBox" & Threading.Interlocked.Increment(count)), ListBox).Items.AddRange(Split(list, vbCrLf))
Next
End Sub
感谢 PT_01,这是我的解决方案!
Private Sub btnLoad_Click(sender As Object, e As EventArgs) Handles btnLoad.Click
Dim bigstringy = System.IO.File.ReadAllText("C:\Users\llooker\Desktop\Macro Scripts\Macro1.txt")
Dim strarr() As String
strarr = bigstringy.Split("~"c)
ListBox1.Items.Clear()
ListBox1.Items.AddRange(Split(strarr(0), vbCrLf))
ListBox2.Items.Clear()
ListBox2.Items.AddRange(Split(strarr(1), vbCrLf))
ListBox3.Items.Clear()
ListBox3.Items.AddRange(Split(strarr(2), vbCrLf))
ListBox4.Items.Clear()
ListBox4.Items.AddRange(Split(strarr(3), vbCrLf))
ListBox2.Items.RemoveAt(0)
ListBox3.Items.RemoveAt(0)
ListBox4.Items.RemoveAt(0)
End Sub
所以我基本上有一个超级简单的宏程序用来记录鼠标点击。每次用户单击时,它都会在 4 个列表框(Click、MouseX、Mouse Y、Time)中的每一个中添加一个新行。
我希望能够保存我创建的宏,因为我不喜欢一遍又一遍地重新创建它们...
我做了一个保存功能,将 4 个列表框中的所有数据保存到一个如下所示的文本文件中:
1
1
1
1
END!~
1020
1032
1134
1129
END!~
611
670
668
602
END!~
32
62
93
131
END!~
我可以导入整个文本文件并用“~”拆分它,这样就得到了数组 (3),如下所示:
Dim bigstringy = System.IO.File.ReadAllText("C:\Users\llooker\Desktop\Macro Scripts\Macro1.txt")
Dim strarr() As String
strarr = bigstringy.Split("~")
我尝试使用
Listbox1.Items.addRange(strarr(0))
Listbox2.Items.addRange(strarr(1))
但这给了我一个错误....
如何将字符串拆分为 4 个单独的数组,然后将它们用作每个单独列表框的范围?
我正在努力实现这一点:
LISTBOX1:
1
1
1
1
END!
LISTBOX2:
1020
1032
1134
1129
END!
LISTBOX3:
611
670
668
602
END!
LISTBOX4:
32
62
93
131
END!
有时简单的 for-next 循环更容易理解和使用
Dim bigstringy = System.IO.File.ReadAllText("C:\Users\llooker\Desktop\Macro Scripts\Macro1.txt")
Dim strarr() As String
strarr = bigstringy.Split(new string() {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
Dim blocks = strarr.Length \ 4
for x as Integer = 0 to blocks
Listbox1.Items.Add(strarr(x).TrimEnd("~"c))
Listbox2.Items.Add(strarr(x + (blocks * 1)).TrimEnd("~"c))
Listbox3.Items.Add(strarr(x + (blocks * 2)).TrimEnd("~"c))
Listbox4.Items.Add(strarr(x + (blocks * 3)).TrimEnd("~"c))
Next
你有 4 个列表,你为每个列表写了一个项目块,所以在换行处拆分你的文本可以计算遍历数组所需的迭代次数。在每次迭代中,您读取列表的数据块,这些数据块现在按块的大小均匀分隔,并将正确的数据集添加到列表中。
使用这种方法,当您将列表框项目写入文件时,您可以删除 END!
书签后的 TILDE (~)
字符。
如果你这样做,那么你也可以删除我需要添加 4 次的 TrimEnd
来处理这个不必要的(现在)分隔符。
请记住,如果不是按顺序写入每个列表框数据,而是在四个列表框中用逗号分隔每个值,在同一索引处写一行,这可能会简化很多。 例如:
1,1020,611,32
1,1032,670,62
1,1134,668,93
1,1129,602,131
尝试
Listbox1.Items.addRange(Split(strarr(0), vbCrLf))
Listbox2.Items.addRange(Split(strarr(1), vbCrLf))
给你好人类:
Private Sub AddValuesToListBoxes()
Dim count = 0
For Each list In Split(IO.File.ReadAllText("c:\values.txt"), "~" & vbCrLf)
CType(Controls("ListBox" & Threading.Interlocked.Increment(count)), ListBox).Items.AddRange(Split(list, vbCrLf))
Next
End Sub
感谢 PT_01,这是我的解决方案!
Private Sub btnLoad_Click(sender As Object, e As EventArgs) Handles btnLoad.Click
Dim bigstringy = System.IO.File.ReadAllText("C:\Users\llooker\Desktop\Macro Scripts\Macro1.txt")
Dim strarr() As String
strarr = bigstringy.Split("~"c)
ListBox1.Items.Clear()
ListBox1.Items.AddRange(Split(strarr(0), vbCrLf))
ListBox2.Items.Clear()
ListBox2.Items.AddRange(Split(strarr(1), vbCrLf))
ListBox3.Items.Clear()
ListBox3.Items.AddRange(Split(strarr(2), vbCrLf))
ListBox4.Items.Clear()
ListBox4.Items.AddRange(Split(strarr(3), vbCrLf))
ListBox2.Items.RemoveAt(0)
ListBox3.Items.RemoveAt(0)
ListBox4.Items.RemoveAt(0)
End Sub