将字符串拆分为 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