将StringBuilder转换为Jagged数组

时间:2013-06-24 14:47:56

标签: vb.net jagged-arrays

我已经构建了一个VB.Net类,将在VBA中用于读取文本文件。我已经设置好了,所以用户可以指定他想要返回的文件中的哪些表。我所做的是构建表的StringBuilder,然后将其作为锯齿状数组返回,但我无法将构建器转换为数组部分。我想将第一个级别拆分为“NewLine”,将第二个级别拆分为“,”。

这可以在不使用多个数组和\或循环的情况下实现吗?

2 个答案:

答案 0 :(得分:0)

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

其他方法可能会利用XML或LINQ,但效率会降低。

答案 1 :(得分:0)

这将创建锯齿状数组:

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

说明:

  • 首先,我们将StringBuilder转换为String:myStringBuilder.ToString()
  • 然后我们分隔换行符:Split({vbCrLf}, StringSplitOptions.None)。由于换行符由Windows中的两个字符组成,因此我们使用Split overload that accepts a string array(因此使用大括号)。
  • 在行中,我们在逗号上分隔行:Split(","c)c指定这是一个字符而不是字符串。
  • 最后,我们通过将ToArray应用于外部和内部LINQ表达式,将这个可枚举的枚举转换为数组数组。