在将其数据导出到数据库表的同时,从csv单元中转义逗号({)}

我有一个csv文件,其中有一个包含逗号的字段。例如,在“办公地点”列下,我的值​​为xyz,即建筑物。当我通过调试器检查值时,它仅显示“ \” xyz”。我尝试使用Replace(",","")Replace("\"","")来转义逗号和反斜杠,但失败了,而且我得到了额外的{{1 }}中的结果标记为红色圆圈。

我在调试时附加了图像,以显示csv行的结构。问题出在红色圆圈区域。

在将其数据导出到数据库表的同时,从csv单元中转义逗号({)}

我还尝试了以下功能:

\

请帮助您解决问题。谢谢

hmd520 回答:在将其数据导出到数据库表的同时,从csv单元中转义逗号({)}

您看到的\字符不在实际字符串中,而只是在调试器视图中添加的转义字符。

单击放大镜以获取字符串的实际值。

enter image description here

希望有帮助。

,

String.Replace不会修改现有字符串,而是返回一个新字符串。因此,您在row检查之外有相同的旧IsNullOrEmpty字符串。

此外,您正在告诉您,您正在尝试转义逗号和引号,但是您正在从代码中删除它。

如果您要删除逗号和引号,您的代码可能看起来像

if (string.IsNullOrEmpty(row))
{
    row = row.Replace(",","").Replace("\"","");
}

如果您要转义引号和逗号,您的代码可能看起来像

if (row != null && row.Contains(","))
{
    row = "\"" + row.Replace("\"","\"\"") + "\"";
}
,

请尝试使用TextFieldParser,在csv中,如果列值用逗号分隔,则用qoutes对列值进行转义,因此将HasFieldsEnclosedInQuotes添加为true将自动将其读取为单列。

using Microsoft.VisualBasic.FileIO;


using (TextFieldParser reader = new TextFieldParser(csvpath))
       {
         reader.Delimiters = new string[] { "," };
         reader.HasFieldsEnclosedInQuotes = true;
         string[] col =  reader.ReadFields();
       }
,

您的代码中有3个问题值得指出。

1。解析CSV可能很棘手

您的代码会正确处理多行字符串吗?您会在其中一列中处理"的代码(因此是转义的")吗?

我建议使用csv读取库(又名NuGet软件包)。

没有反斜杠

这是一个文件。

1,"The string in the first row has a comma,and an f,in it"
2,The string in the 2nd row does not have a comma in it 

这是Visual Studio显示的内容(我在这里使用VS Code)。

enter image description here

这是Console.WriteLine打印的内容。

1,The string in the 2nd row does not have a comma in it 

3。替换逗号

即使您处理引号,替换逗号也不会摆脱字段定界符吗?

本文链接:https://www.f2er.com/3059357.html

大家都在问