带有多个双引号和“/”斜杠的C#字符串

问题描述 投票:0回答:3

我有一个这样的字符串

'Name.ToLower().Contains ("") And Created < ("05/12/2022 01:41:16") And Disabled == false'

在 C# 中如何处理这个问题?

我尝试在前面加上

@"""
等。

dotnet 小提琴

c# string double-quotes string-literals
3个回答
1
投票
var a = @"'Name.ToLower().Contains ("""") And Created < (""05/12/2022"") And ExpandOnStart == false'";

喜欢这样吗?


0
投票

这是一种有点不同的方法,但您提到该字符串是通过附加其他字符串创建的,所以可能会有所帮助。

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"

https://dotnetfiddle.net/oq3UYq


0
投票

显然你必须以某种方式转义特殊字符。在较旧的 C# 中,使用逐字字符串https://dotnetfiddle.net/8OtiKP

@"'Name.ToLower().Contains ("""") And Created < (""05/12/2022"") And ExpandOnStart == false'"

如您所见,

"
仍然需要用
""
进行转义,但所有其他字符,包括
\
可以保持原样

在 C#11 中有一个更好的解决方案:原始字符串文字,根本不需要转义

"

"""'Name.ToLower().Contains ("") And Created < ("05/12/2022 01:41:16") And Disabled == false'"""
© www.soinside.com 2019 - 2024. All rights reserved.