Vb.net 将StringBuilder转换为锯齿阵列

Vb.net 将StringBuilder转换为锯齿阵列,vb.net,jagged-arrays,Vb.net,Jagged Arrays,我已经构建了一个VB.Net类,该类将在VBA中用于读取文本文件。我已经对它进行了设置,以便用户可以指定要返回的文件中的哪些表。我所做的是构建一个表的StringBuilder,然后将其作为锯齿数组返回,但是我不能完全正确地将生成器转换为数组部分。我希望第一层在“换行符”上拆分,第二层在“,”上拆分 不必使用多个数组和\或循环,这是否可行?您可以使用嵌套列表和泛型来表示锯齿状数组。外部(行)是一个通用列表,内部(列)是一个字符串列表 其他方法可以利用XML或LINQ,但效率较低。这将创建锯齿状数

我已经构建了一个VB.Net类,该类将在VBA中用于读取文本文件。我已经对它进行了设置,以便用户可以指定要返回的文件中的哪些表。我所做的是构建一个表的StringBuilder,然后将其作为锯齿数组返回,但是我不能完全正确地将生成器转换为数组部分。我希望第一层在“换行符”上拆分,第二层在“,”上拆分


不必使用多个数组和\或循环,这是否可行?

您可以使用嵌套列表和泛型来表示锯齿状数组。外部(行)是一个通用列表,内部(列)是一个字符串列表


其他方法可以利用XML或LINQ,但效率较低。

这将创建锯齿状数组:

Dim myArray = (From row In myStringBuilder.ToString().Split({vbCrLf}, StringSplitOptions.None)
               Select (From col In row.Split(","c)
                       Select col
                      ).ToArray()
              ).ToArray()
说明:

  • 首先,我们将StringBuilder转换为字符串:
    myStringBuilder.ToString()
  • 然后我们在换行符上拆分:
    split({vbCrLf},StringSplitOptions.None)
    。因为在窗口中换行符由两个字符组成,所以我们使用(因此使用大括号)
  • 在行中,我们用逗号分隔行:
    split(“,”c)
    c
    指定这是一个字符而不是字符串
  • 最后,我们通过将
    ToArray
    应用于外部和内部LINQ表达式,将此可枚举项转换为数组数组