Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 常误差新行_C#_.net_String_Insert - Fatal编程技术网

C# 常误差新行

C# 常误差新行,c#,.net,string,insert,C#,.net,String,Insert,我正在编写一个c#代码,从数据库中获取值并使用它。 我面临的问题如下 如果从数据库获取的值为: string cat1 = "sotheby's"; 现在,在使用此cat时,我想在单引号前插入一个转义字符,为此,我编写了以下代码: string cat1 = "sotheby's"; if (cat1.Contains("'")) { var indexofquote = cat1.IndexOf("

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

如果从数据库获取的值为:

 string cat1 = "sotheby's";
现在,在使用此cat时,我想在单引号前插入一个转义字符,为此,我编写了以下代码:

  string cat1 = "sotheby's";
                    if (cat1.Contains("'")) {
                        var indexofquote = cat1.IndexOf("'");
                        cat1.Insert(indexofquote-1,"\");
                        var cat2 = cat1;
                    }
错误出现在插入行、反斜杠(转义字符)中。该误差为新行常数。
请帮助我如何更正此错误。

这将仅替换一个报价。 要让它们都使用:

string cat1_escaped = cat1.Replace("'", "\'");
虽然很多数据库都不会这样转义引号,而是通过将它们加倍:

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

你不能仅仅用C代码写
“\”
。这将产生“newline in Constant”错误,因为它“转义”了第二个引号,因此不计算。而且字符串没有闭合

使用
“\\”
(用自身转义
\


或者使用
@“\”
(逐字字符串)。

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

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

@"\"
见:


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

您需要像
“\\”
那样对其进行转义,或者将其更改为
@“\”
侧注:正确的解决方案很有可能是使用现有的JSON序列化将更可靠地转义JavaScript/web服务中使用的字符…无论该字符串的标题是什么,几乎可以肯定,有一种已经构建的解决方案比手动转义
字符要好。另外,:“返回一个新字符串,其中…”不要忘记转义反斜杠;)