29

我正在编写 ac# 代码,在其中我从数据库中获取值并使用它。我面临的问题如下。

如果我从数据库中获取的值是:

 string cat1 = "sotheby's";

现在在使用这只猫时,我想在单引号之前插入一个转义字符,为此我编写了以下代码:

  string cat1 = "sotheby's";
                    if (cat1.Contains("'")) {
                        var indexofquote = cat1.IndexOf("'");
                        cat1.Insert(indexofquote-1,"\");
                        var cat2 = cat1;
                    }

插入行中的错误上升,反斜杠(转义字符)。错误是常量中的新行。请帮助我如何纠正这个错误。

4

3 回答 3

46

您不能只用"\"C# 代码编写。这将产生“常量中的新行”错误,因为它“转义”了第二个引号,因此它不计算在内。并且字符串没有关闭。

使用(用本身"\\"转义) 或使用(逐字字符串)。\
@"\"

于 2013-07-19T06:47:52.113 回答
2

字符串文字中的反斜杠是一个转义字符,因此必须自行转义:

"\\"

或者您可以使用所谓的逐字字符串文字:

@"\"

请参阅:http: //msdn.microsoft.com/en-us/library/aa691090.aspx

关于您的编译错误:反斜杠转义了以下引号,因此字符串文字不被识别为已关闭。以下字符 ) 和 ; 对字符串文字有效,但行尾(换行符)无效。因此错误。

于 2013-07-19T06:51:48.850 回答
0

那只会替换 1 个单引号。为了让他们都使用:

string cat1_escaped = cat1.Replace("'", "\'");

虽然很多数据库不会像这样逃避引号,而是通过加倍它们:

string cat1_escaped = cat1.Replace("'", "''");
于 2013-07-19T06:47:49.517 回答