转义字符串并返回字符串

时间:2015-03-16 06:54:34

标签: c# asp.net-mvc asp.net-mvc-5

我是asp.net的新手,我最近正在开发一个mvc5项目。在该项目中,可以选择上传CSV文件并将其下载。问题有时CSV文件包含逗号。我用这段代码来逃避逗号

Address = Address.Contains(",") ? string.Format("\"{0}\"", Address) :Address;

现在它保存到这样的数据库 “”TEST,TEST STATION“”

我检索回数据后,它包含双引号,如下所示 “TEST,TEST STATION”

如何删除双引号?我用来转义逗号的方法是正确的还是有其他方法

2 个答案:

答案 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;

你会得到没有引号的字符串。即使您要删除给定字符串中的任何字符,也可以使用这些正则表达式。希望这能解决你的问题。