You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中跳过指定CSV行并写入新文件

解决方案

原代码一次性读取整个文件内容的方式无法实现逐行筛选逻辑,需要改为逐行读取、判断、写入的方式。以下是修改后的代码及说明:

关键修改点

  • 替换一次性读取为逐行读取,避免大文件场景下内存占用过高
  • 对每行按逗号分割字段,注意VB中数组索引从0开始,第54个字段对应索引53,判断该字段是否包含"DISAPPROVE"
  • 仅将符合条件的行写入新文件

修改后的完整代码

' 读取原文件并逐行处理
Using reader As New StreamReader("R:\FilePath.csv")
    Using writer As New StreamWriter("R:\NewFilePath.csv")
        ' 先写入表头(原文件无表头可删除此段)
        Dim headerLine As String = reader.ReadLine()
        If Not String.IsNullOrEmpty(headerLine) Then
            writer.WriteLine(headerLine)
        End If

        ' 逐行处理数据行
        Dim currentLine As String
        Do While reader.Peek() <> -1
            currentLine = reader.ReadLine()
            If String.IsNullOrEmpty(currentLine) Then
                Continue Do ' 跳过空行,可根据需求调整
            End If

            ' 分割字段(注意:若字段含带逗号的引号内容,需用专门CSV解析库,此为简单场景处理)
            Dim fields() As String = currentLine.Split(","c)
            ' 检查字段数量,避免索引越界
            If fields.Length >= 54 Then
                ' 判断第54个字段是否为DISAPPROVE,忽略大小写
                If Not fields(53).Trim().Equals("DISAPPROVE", StringComparison.OrdinalIgnoreCase) Then
                    writer.WriteLine(currentLine)
                End If
            Else
                ' 字段不足54个的行,此处选择直接写入,可根据需求改为跳过
                writer.WriteLine(currentLine)
            End If
        Loop
    End Using
End Using

额外说明

  • 使用Using语句可自动释放文件资源,比手动调用Close()更安全可靠
  • 若CSV存在带引号包含逗号的复杂字段(例如"Doe, Jane"),简单Split(",")会出错,建议使用Microsoft.VisualBasic.FileIO.TextFieldParser或第三方CSV解析库处理
  • 若不需要忽略大小写判断,可删除StringComparison.OrdinalIgnoreCase参数,直接使用fields(53).Trim().Equals("DISAPPROVE")

内容的提问来源于stack exchange,提问作者Nate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:33:21