常量错误中的新行

时间:2013-07-19 06:42:30

标签: c# .net string insert

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

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

 string cat1 = "sotheby's";

现在使用这个猫我想在单引号之前插入一个转义字符,为实现这一点,我已经写了下面的代码:

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

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

3 个答案:

答案 0 :(得分:37)

您不能只在C#代码中编写"\"。这将产生“常量新线”错误,因为它“逃脱”第二个引用,因此它不计算。字符串没有关闭。

使用"\\"(逃避\自己)
或使用@"\"(逐字字符串)。

答案 1 :(得分:1)

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

"\\"

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

@"\"

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

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

答案 2 :(得分:0)

这只会取代1个单引号。 为了让它们全部使用:

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

虽然很多数据库都没有逃避这样的引用,而是将它们加倍:

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