使用 C# 将 “ 放入逐字字符串中

本文关键字:字符串 使用 | 更新日期: 2023-09-27 17:56:17

我需要打印

a
"b"
c

使用 vebatim 字符串,我在这里提出了另一个关于多行代码模板的问题。

我尝试使用逐字字符串如下:

using System;
class DoFile {
    static void Main(string[] args) {
        string templateString = @"
        {0}
        ''"{1}''"
        {2}
        ";
        Console.WriteLine(templateString, "a", "b", "c");
    }
}

但是,我得到了这个错误。

t.cs(8,11): error CS1525: Unexpected symbol `{'
t.cs(9,0): error CS1010: Newline in constant
t.cs(10,0): error CS1010: Newline in constant

'"{1}'"也不起作用。

怎么了?

使用 C# 将 “ 放入逐字字符串中

试试这个( " 代替 " 转义)

string templateString = @"
        {0}
        ""{1}""
        {2}
        ";

来自 C# 规范:http://msdn.microsoft.com/en-us/library/Aa691090

引用转义序列: '"'"

在逐字字符串文本中,""用于双引号字符。

string line = @"
{0}
""{1}""
{2}";
当在

C# 中使用带有 @" 的多行字符串文本时,双引号的正确转义序列变为 "" 而不是 '"

    string templateString = @"
    {0}
    ""{1}""
    {2}
    ";

在逐字字符串中,使用 "" 表示结果中的"

@"字符串中,嵌入的双引号被转义为 "" ,而不是 '" 。将代码更改为

    string templateString = @"
    {0}
    ""{1}""
    {2}
    ";

你的问题应该消失了。

string templateString = @"        
{0}        
""{1}""
{2}
";

编辑:更新以在使用逐字显示正确的语法。

使用"双双"引号在输出中生成单个双引号。这与旧版 VB6 处理字符串的方式相同。

@" ""something"" is here"; 

包含一个字符串,该字符串的引号括在某物周围。