如何在使用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
这个选项是可用的还是类似的?
‘编辑’
当你有像我这样的基本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无论如何,请使用标记答案中的代码。它超优雅的!
发布于 2014-03-06 12:50:23
我还没有找到任何可用的东西,但这应该是可行的:
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);发布于 2016-06-03 21:54:11
我发现了一种使用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 Whilehttps://stackoverflow.com/questions/22224878
复制相似问题