使用Lumenworks CSV Parser提取整行/整行

时间:2014-03-06 12:41:41

标签: vb.net lumenworks

使用LumenWorks CVS解析器时如何读取整行?到目前为止,我只能通过输入而不是整行读取条目。即如果一行是a,b,c,d,e,f,我就可以拔出每个字母。但是,我希望能够阅读整行

目前我有:

my_csv = New CsvReader(New StreamReader(file_path), False, ",", resetPoint)
field_count = my_csv.FieldCount
While my_csv.ReadNextRecord()
    'process the data here
    'This code will process each individual alphabet in one row

以上读取每个单独的字母表。我想要的是拥有像

这样的东西

row = my_csv.row

此选项是否可用或类似?

'EDITED'

当你拥有像我这样的基本VB编程技能时,这就是你想出来解决问题的方法

Dim my_string As String = ""
        For x As Integer = 0 To my_csv.FieldCount - 1
            my_string += my_csv(x).ToString.Trim + ","
        Next
        my_string = Mid(my_string, 1, Len(my_string) - 1)
        Return my_string

一定要使用标记答案中的代码。它超级优雅!

2 个答案:

答案 0 :(得分:3)

我没有找到任何可用的东西,但这应该有效:

VB:

Dim rowFields = Enumerable.Range(0, my_csv.FieldCount).
   Select(Function(field) my_csv(CInt(my_csv.CurrentRecordIndex), field))
Dim line As String = String.Join(my_csv.Delimiter.ToString(), rowFields)

C#:

var rowFields = Enumerable.Range(0, my_csv.FieldCount)
    .Select(field => my_csv[(int)my_csv.CurrentRecordIndex, field]);
string line = string.Join(my_csv.Delimiter.ToString(), rowFields);

答案 1 :(得分:1)

我找到了一个使用CopyCurrentRecordTo(array)方法的方法,该方法似乎比文件更宽(更多列)更快(几秒钟):

C#:

string[] currentRow = new string[csv.FieldCount];
while (csv.ReadNextRecord())
{
  csv.CopyCurrentRecordTo(currentRow);
  var line = string.Join(csv.Delimiter.ToString(), currentRow);
}

VB(这是来自Telerik转换器,请注意):

Dim currentRow As String() = New String(csv.FieldCount - 1) {}
While csv.ReadNextRecord()
    csv.CopyCurrentRecordTo(currentRow)
    Dim line = String.Join(csv.Delimiter.ToString(), currentRow)
End While