Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# string.Replace不适用于quote_C#_Asp.net_.net_C# 3.0 - Fatal编程技术网

C# string.Replace不适用于quote

C# string.Replace不适用于quote,c#,asp.net,.net,c#-3.0,C#,Asp.net,.net,C# 3.0,我想要的结果是,如果任何字符串有引号,请将其更改为斜杠引号,例如John's->John's 但上述替换功能无法正常工作。 结果就像约翰的一样 但是如果我们把代码改成 ((string)dt.Rows[i][1]).Replace("'", "\\'") 结果和约翰的一样 无论如何都会更改它。请尝试双反斜杠 \\ 只有一个反斜杠是一种逃避;二是实际的反斜杠。使用\\'或@'作为替换字符串。反斜杠是C字符串文字中的转义字符。请参阅C:\'中的说明,字符串文字结果只包含一个引号。 存在此转义序列的

我想要的结果是,如果任何字符串有引号,请将其更改为斜杠引号,例如John's->John's

但上述替换功能无法正常工作。 结果就像约翰的一样

但是如果我们把代码改成

((string)dt.Rows[i][1]).Replace("'", "\\'")
结果和约翰的一样


无论如何都会更改它。

请尝试双反斜杠

\\

只有一个反斜杠是一种逃避;二是实际的反斜杠。

使用\\'或@'作为替换字符串。反斜杠是C字符串文字中的转义字符。请参阅C:\'中的说明,字符串文字结果只包含一个引号。 存在此转义序列的原因是,如果使用的是字符文字'\,则单引号将需要转义


@表示您使用的是逐字字符串语法,它允许多行字符串,并且不需要转义字符,除了双引号,您可以使用双引号Visual Basic样式转义字符。

Replace',\'使用双斜杠,因为反斜杠是转义字符,你需要告诉它你想把它当作一个文本字符串。可以通过在字符串前加一个@来实现:

((string)dt.Rows[i][1]).Replace("'", "\'")

您可以使用以下内容:

((string)dt.Rows[i][1]).Replace("'", @"\'") 
结果:

约翰·斯蒂夫的

约翰·斯蒂夫的


你能澄清一下吗?你是这么说的吗

private static string replace(String input)
{
   return Regex.Replace(input, "('|\")", "\\'");
}

static void Main(string[] args)
{
   String value1 = "John Steve's";
   String value2 = "John Steve\"s";

   Console.WriteLine(replace(value1));
   Console.WriteLine(replace(value2));
 }
不将“替换为\”吗

因为我刚试过,效果很好。就是这个,

((string)dt.Rows[i][1]).Replace("'", "\\'") 

打印blah\'

如果您想准备SQL查询,我认为最好的方法是替换单个的'for'。例如,如果您想搜索John O'Connor,这至少在SQL Server、Access、Oracle等中有效


选择。。。从username='Jonh OConnor'

听起来像是要清理SQL字符串。如果这是真的,那么请意识到有比手动替换引号更好的方法。例如,准备好的语句。@John Rash-我不确定您的编辑是否有帮助,据我所知,您已经通过将\'改为\'来更正了Azhar的代码,因此您的编辑回答了这个问题:-@Steve-我没有添加任何内容,只是修改了格式,看看@John-怪异,您是对的,查看源代码时,您显然没有修改它,但视觉差异似乎显示string.Replace',\;更改为字符串。替换“,\ \”;对于这种混乱,我深表歉意。当有很多事情需要逃避时,@方法会更快,如果您曾经复制并粘贴到不同的.NET语言中,您将很乐意只需要更改@而不是所有\\如果您想准备这样的SQL查询,请不要这样做。
            string one = "blah'";
            string two = one.Replace("'", "\\'");

            Console.WriteLine(two);