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

如何使用.Replace处理CSV文件中的重复双引号,解决解析错误?

解决CSV重复双引号解析错误的方案

首先,你的代码问题出在双引号的转义写法上。在VB.NET中,字符串里的双引号需要用两个双引号表示一个实际的双引号,你之前的Replace参数写错了,导致无法匹配重复的双引号。

修正字段处理代码

针对已经分割后的fields数组,按以下步骤修改:

  1. 先替换所有连续的两个双引号为单个双引号
  2. 再移除字段首尾多余的单个双引号(根据解析需求选择是否保留)
' 替换所有连续两个双引号为单个
fields(i) = fields(i).Replace("""""", """")
' 如果字段首尾是单个双引号,移除它们
If fields(i).StartsWith("""") AndAlso fields(i).EndsWith("""") Then
    fields(i) = fields(i).Substring(1, fields(i).Length - 2)
End If

预处理整个CSV文件的方案

如果字段中可能包含逗号(简单分割会出错),建议先预处理整个文件再解析:

Imports System.IO

' 读取原始CSV内容
Dim rawContent As String = File.ReadAllText("path/to/your.csv")
' 全局替换所有连续两个双引号为单个
rawContent = rawContent.Replace("""""", """")

' 按行处理,清理首尾双引号
Dim lines As String() = rawContent.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
For lineIndex As Integer = 0 To lines.Length - 1
    Dim lineFields As String() = lines(lineIndex).Split(","c)
    For fieldIndex As Integer = 0 To lineFields.Length - 1
        Dim field As String = lineFields(fieldIndex)
        If field.StartsWith("""") AndAlso field.EndsWith("""") Then
            lineFields(fieldIndex) = field.Substring(1, field.Length - 2)
        End If
    Next
    lines(lineIndex) = String.Join(",", lineFields)
Next

' 写入清理后的CSV
File.WriteAllText("path/to/cleaned.csv", String.Join(Environment.NewLine, lines))

额外建议

作为新手,不建议手动处理CSV解析的细节(比如字段含逗号、换行的情况),可以使用成熟的CSV库如CsvHelper(支持VB.NET),它能自动处理各种转义场景,避免重复造轮子。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:02:05