带有多个双引号和“/”斜杠的 C# 字符串
C# string with multiple double quotes & "/" slashes
我有这样的字符串
'Name.ToLower().Contains ("") And Created < ("05/12/2022 01:41:16") And Disabled == false'
如何在 C# 中处理此问题?
我试过在前面加上@"""
等等
var a = @"'Name.ToLower().Contains ("""") And Created < (""05/12/2022"") And ExpandOnStart == false'";
像这样?
显然你必须以某种方式转义特殊字符。在旧的 C# 中使用 verbatim strings: https://dotnetfiddle.net/8OtiKP
@"'Name.ToLower().Contains ("""") And Created < (""05/12/2022"") And ExpandOnStart == false'"
可以看到,"
仍然需要用""
进行转义,但是其他所有的字符,包括\
都可以保留as-is
在 C#11 中有一个更好的解决方案:raw string literal 根本不需要转义 "
"""'Name.ToLower().Contains ("") And Created < ("05/12/2022 01:41:16") And Disabled == false'"""
这是一种有点不同的方法,但您提到该字符串是通过附加其他字符串创建的,因此它可能会有所帮助。
var createdDate = "05/12/2022";
var name = "some name";
var expandOnStart = "false";
var theString = $"Name.ToLower().Contains(\"{name}\") And Created < (\"{createdDate}\") And ExpandOnStart == \"{expandOnStart}\"";
// theString = Name.ToLower().Contains("some name") And Created < ("05/12/2022") And ExpandOnStart == "false"
我有这样的字符串
'Name.ToLower().Contains ("") And Created < ("05/12/2022 01:41:16") And Disabled == false'
如何在 C# 中处理此问题?
我试过在前面加上@"""
等等
var a = @"'Name.ToLower().Contains ("""") And Created < (""05/12/2022"") And ExpandOnStart == false'";
像这样?
显然你必须以某种方式转义特殊字符。在旧的 C# 中使用 verbatim strings: https://dotnetfiddle.net/8OtiKP
@"'Name.ToLower().Contains ("""") And Created < (""05/12/2022"") And ExpandOnStart == false'"
可以看到,"
仍然需要用""
进行转义,但是其他所有的字符,包括\
都可以保留as-is
在 C#11 中有一个更好的解决方案:raw string literal 根本不需要转义 "
"""'Name.ToLower().Contains ("") And Created < ("05/12/2022 01:41:16") And Disabled == false'"""
这是一种有点不同的方法,但您提到该字符串是通过附加其他字符串创建的,因此它可能会有所帮助。
var createdDate = "05/12/2022";
var name = "some name";
var expandOnStart = "false";
var theString = $"Name.ToLower().Contains(\"{name}\") And Created < (\"{createdDate}\") And ExpandOnStart == \"{expandOnStart}\"";
// theString = Name.ToLower().Contains("some name") And Created < ("05/12/2022") And ExpandOnStart == "false"