我正在编写一个c#代码,我从数据库中获取值并使用它。 我面临的问题如下。
如果我从数据库中获取的值是:
string cat1 = "sotheby's";
现在使用这个猫我想在单引号之前插入一个转义字符,为实现这一点,我已经写了下面的代码:
string cat1 = "sotheby's";
if (cat1.Contains("'")) {
var indexofquote = cat1.IndexOf("'");
cat1.Insert(indexofquote-1,"\");
var cat2 = cat1;
}
插入行中的错误上升,反斜杠(转义字符)。错误是常量中的新行。 请帮我解决这个错误。
答案 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("'", "''");