使用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
一定要使用标记答案中的代码。它超级优雅!
答案 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