((string)dt.Rows[i][1]).Replace("'", "\\'")
我想要的结果是,如果任何字符串有引号,则将其更改为斜杠引号,例如John's
- > John\'s
但上面的替换功能不能正常工作。
结果如John\\'s
但如果我们将代码更改为
((string)dt.Rows[i][1]).Replace("'", "\'")
它给出的结果如John's
无论如何都会改变它。
答案 0 :(得分:16)
因为反斜杠是转义字符,所以你需要告诉它你要把它当作文字字符串来对待它。你可以通过在字符串前加上@来实现这个目的:
((string)dt.Rows[i][1]).Replace("'", @"\'")
答案 1 :(得分:9)
尝试双反斜杠。
\\
只有一个反斜杠就是逃避;两个是实际的反斜杠。
答案 2 :(得分:4)
使用"\\'"
或@"\'"
替换字符串。反斜杠是C#字符串文字中的转义字符。请参阅C#中string literals的解释:字符串文字中的\'
只会导致单引号。
这个转义序列存在的原因是因为如果使用char
文字('\''
),单引号将需要转义。
@
表示您正在使用逐字字符串语法,它允许使用多行字符串并且除了双引号之外不需要转义字符,您可以使用双引号转义(Visual Basic样式)。
答案 3 :(得分:3)
((string)dt.Rows[i][1]).Replace("'", "\\'")
不用'
替换\'
吗?
因为我刚试过它并且工作正常。即此
string one = "blah'";
string two = one.Replace("'", "\\'");
Console.WriteLine(two);
打印blah\'
答案 4 :(得分:1)
替换(“'”,“\'”)使用双斜杠
答案 5 :(得分:0)
您可以使用以下内容:
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));
}
结果:
约翰史蒂夫的
约翰史蒂夫的
答案 6 :(得分:0)
如果你想准备一个SQL查询,我认为最好的方法是替换一个'for''。例如,如果您想搜索John O'Connor,这将起作用(至少在SQL Server,Access,Oracle,...)。
从username ='Jonh O''Connor'
的用户中选择....