C# string.Replace不适用于quote
我想要的结果是,如果任何字符串有引号,请将其更改为斜杠引号,例如John's->John's 但上述替换功能无法正常工作。 结果就像约翰的一样 但是如果我们把代码改成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:\'中的说明,字符串文字结果只包含一个引号。 存在此转义序列的
((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);