双引号可以像这样转义:
string test = @"He said to me, ""Hello World"". How are you?";
但这涉及到向字符串中添加字符“。是否有c#函数或其他方法来转义双引号,以便不需要更改字符串?
双引号可以像这样转义:
string test = @"He said to me, ""Hello World"". How are you?";
但这涉及到向字符串中添加字符“。是否有c#函数或其他方法来转义双引号,以便不需要更改字符串?
当前回答
在c#中,你可以使用反斜杠在字符串中加入特殊字符。 例如,要输入“,你需要写\”。 你可以用反斜杠写很多字符:
与其他字符反斜杠
\0 nul character
\a Bell (alert)
\b Backspace
\f Formfeed
\n New line
\r Carriage return
\t Horizontal tab
\v Vertical tab
\' Single quotation mark
\" Double quotation mark
\\ Backslash
任何数字字符替换:
\xh to \xhhhh, or \uhhhh - Unicode character in hexadecimal notation (\x has variable digits, \u has 4 digits)
\Uhhhhhhhh - Unicode surrogate pair (8 hex digits, 2 characters)
其他回答
在c# 11.0预览版中,您可以使用原始字符串字面值。
Raw string literals are a new format for string literals. Raw string literals can contain arbitrary text, including whitespace, new lines, embedded quotes, and other special characters without requiring escape sequences. A raw string literal starts with at least three double-quote (""") characters. It ends with the same number of double-quote characters. Typically, a raw string literal uses three double quotes on a single line to start the string, and three double quotes on a separate line to end the string.
string test = """He said to me, "Hello World" . How are you?""";
在c#中,至少有四种方法可以在字符串中嵌入引号:
带反斜杠的转义引号 字符串前面加@并使用双引号 使用对应的ASCII字符 使用十六进制Unicode字符
详细说明请参考本文件。
在c#中,你可以使用反斜杠在字符串中加入特殊字符。 例如,要输入“,你需要写\”。 你可以用反斜杠写很多字符:
与其他字符反斜杠
\0 nul character
\a Bell (alert)
\b Backspace
\f Formfeed
\n New line
\r Carriage return
\t Horizontal tab
\v Vertical tab
\' Single quotation mark
\" Double quotation mark
\\ Backslash
任何数字字符替换:
\xh to \xhhhh, or \uhhhh - Unicode character in hexadecimal notation (\x has variable digits, \u has 4 digits)
\Uhhhhhhhh - Unicode surrogate pair (8 hex digits, 2 characters)
请解释你的问题。你说:
但这涉及到向字符串中添加字符“。
这是什么问题?你不能输入string foo = " foo "bar"";,因为这会引发编译错误。至于添加部分,在字符串大小方面,这是不正确的:
@"""".Length == 1
"\"".Length == 1
2022年更新:以前的答案是“不”。然而,c# 11引入了一个叫做“原始字符串字面量”的新特性。引用微软文档:
从c# 11开始,您可以使用原始字符串字面值更容易地创建多行字符串,或使用任何需要转义序列的字符。原始字符串字面量不需要使用转义序列。您可以编写字符串,包括空格格式,以您希望它在输出中出现的方式。”
来源:https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/ raw-string-literals
示例:所以使用原来的例子,你可以这样做(注意原始字符串文字总是以三个或更多引号开头):
string testSingleLine = """He said to me, "Hello World". How are you?""";
string testMultiLine = """
He said to me, "Hello World". How are you?
""";