我已经构建了一个 VB.Net 类,它将在 VBA 中用于读取文本文件。我已经设置好了,所以用户可以指定他想要返回的文件中的哪些表。我所做的是构建表的 StringBuilder,然后将其作为锯齿状数组返回,但我不能完全正确地将构建器转换为数组部分。我希望第一级在“NewLine”上拆分,第二级在“,”上拆分。
这是否可能无需使用多个数组和\或循环?
我已经构建了一个 VB.Net 类,它将在 VBA 中用于读取文本文件。我已经设置好了,所以用户可以指定他想要返回的文件中的哪些表。我所做的是构建表的 StringBuilder,然后将其作为锯齿状数组返回,但我不能完全正确地将构建器转换为数组部分。我希望第一级在“NewLine”上拆分,第二级在“,”上拆分。
这是否可能无需使用多个数组和\或循环?
您可以使用嵌套列表和泛型来表示您的锯齿状数组。外层(行)是一个通用列表,内层(列)可能是一个字符串列表。
其他方法可以利用 XML 或 LINQ,但效率较低。
这将创建锯齿状数组:
Dim myArray = (From row In myStringBuilder.ToString().Split({vbCrLf}, StringSplitOptions.None)
Select (From col In row.Split(","c)
Select col
).ToArray()
).ToArray()
解释:
myStringBuilder.ToString()
Split({vbCrLf}, StringSplitOptions.None)
. 由于在 Windows 中换行符由两个字符组成,因此我们使用Split
接受字符串数组的重载(因此是大括号)。Split(","c)
。c
指定这是一个字符而不是字符串。ToArray
最后,我们通过应用到外部和内部 LINQ 表达式,将这个可枚举的可枚举转换为数组数组。