VB.NET读取CSV并有条件地添加新字段

时间:2016-09-19 10:40:05

标签: vb.net csv

运行调试器时,我收到以下错误,

HSL文件Config.exe中出现'System.IndexOutOfRangeException'类型的第一次机会异常 附加信息:索引超出了数组的范围。 HSL文件Config.exe中发生未处理的“System.IndexOutOfRangeException”类型异常 附加信息:索引超出了数组的范围。 程序'[14044] HSL文件Config.vshost.exe:Managed(v4.0.30319)'已退出,代码为0(0x0)。

我已经检查了csv数据文件,加载实际上是30列长,没有空白行。但是有一些空白的领域。

    Dim FileName = tbOpen.Text
    Dim fileout = tbSave.Text
    Dim lines = File.ReadAllLines(FileName)
    Dim output As New List(Of String)

    For Each line In lines
        Dim fields = line.Split(","c)
        If fields(0) = "R62167" Then
            ReDim Preserve fields(fields.Length)
            fields(31) = "9991"
        End If
        If fields(0) = "R62193" Then
            ReDim Preserve fields(fields.Length)
            fields(32) = "1999"
        End If
        If fields(2) = "2249" Then
            fields(2) = "0000"
        End If

        output.Add(String.Join(","c, fields))
    Next
    File.WriteAllLines(fileout, output)

2 个答案:

答案 0 :(得分:1)

使用redim

If fields(5) = "4WK" Then
    ReDim Preserve fields(fields.Length)
    fields(6) = "NewDate"
End If

答案 1 :(得分:0)

不要将Fields用作数组,而应将其作为列表,因为它们可以调整大小。

Dim fields = line.Split(","c).ToList()

然后你可以做

If fields(5) = "4WK" Then
    fields.Add("NewDate")
End If