我是asp.net的新手,我最近正在开发一个mvc5项目。在该项目中,可以选择上传CSV文件并将其下载。问题有时CSV文件包含逗号。我用这段代码来逃避逗号
Address = Address.Contains(",") ? string.Format("\"{0}\"", Address) :Address;
现在它保存到这样的数据库 “”TEST,TEST STATION“”
我检索回数据后,它包含双引号,如下所示 “TEST,TEST STATION”
如何删除双引号?我用来转义逗号的方法是正确的还是有其他方法
答案 0 :(得分:1)
在读取您通过连接字符串构建SQL语句的行之间。您应该避免这样做,因为如果您没有完全正确地获取所有转义规则,这样的代码很容易SQL injection,这实际上很难。
有一种更好的方法:参数化查询。您可以找到有关如何使用SqlCommand
和参数here的示例,或开始阅读MSDN here。
我对您的代码了解不多,但可能看起来像这样:
string sql = "INSERT INTO Addresses (Address) VALUES (@Address)";
using (SqlCommand cmd = new SqlCommand(sql))
{
cmd.Connection = dbConnection;
cmd.Parameters.AddWithValue("@Address", Address);
cmd.ExecuteNonQuery();
}
修改强>:
话虽这么说,在解析CSV时删除引号可能很有用,所以这里有一个方法:
private static string RemoveQuotes(string str)
{
if (str.StartsWith("\"") && str.EndsWith("\""))
{
return str.Substring(1, str.Length - 2);
}
return str;
}
如果您愿意,可以随意将其变为extension method。
答案 1 :(得分:1)
通常,如果您只想删除双引号,请使用此代码。
Address = Address.Contains(“\”“)?Address.Replace(”\“”,string.Empty):Address;
你会得到没有引号的字符串。即使您要删除给定字符串中的任何字符,也可以使用这些正则表达式。希望这能解决你的问题。