原始字符串字面量 - 字符串字面量中的 """

原始字符串字面量以至少三个双引号 (") 字符开始和结束:

var singleLine = """This is a "raw string literal". It can contain characters like \, ' and ".""";

原始字符串字面量可以包含多行:

var xml = """
        <element attr="content">
            <body>
            </body>
        </element>
        """;

以下规则控制多行原始字符串字面量的解释:

  • 左引号必须是其行中的最后一个非空格字符,右引号必须是其行中的第一个非空格字符。
  • 右引号左侧的任何空格将从原始字符串字面量的所有行中删除。
  • 忽略同一行上左引号后的任何空格。
  • 字符串字面量中仅包含左引号后面的空格行。
  • 如果空格位于同一行的结束分隔符之前,则每个内容行的开头必须存在空格字符(例如空格与制表符)的确切数字和类型。 具体而言,空格与水平制表符不匹配,反之亦然。
  • 在右引号之前的换行符不包含在字面值字符串中。

小窍门

Visual Studio 和 C# 开发工具包在原始字符串文本包含 JSON 数据或正则表达式时提供一些验证和语法突出显示。

这些工具分析文本。 如果工具确信文本表示 JSON 或正则表达式,编辑器将提供语法着色。

可以通过在声明上方添加指示格式的注释来改善该体验:

  • // lang=json 指示原始字符串文本表示 JSON 数据。
  • // lang=regex 指示原始字符串文本表示正则表达式。

当原始字符串文本用作参数时,参数使用该 System.Diagnostics.CodeAnalysis.StringSyntaxAttribute 参数来指示格式,这些工具将验证某些格式类型的原始字符串文本。 支持 JSON 和正则表达式。

对于某些格式,注释或属性启用代码建议,为基于格式的字符串文本提供修补程序。

可能需要创建包含三个或多个连续双引号字符的原始字符串文本。 原始字符串字面量可以至少三个双引号字符的序列开始和结束。 如果字符串字面量包含三个连续双引号,则以四个双引号字符开始和结束原始字符串字面量:

var moreQuotes = """" As you can see,"""Raw string literals""" can start and end with more than three double-quotes when needed."""";

如果需要以引号字符开始或结束原始字符串字面量,请使用多行格式:

var MultiLineQuotes = """"
               """Raw string literals""" can start and end with more than three double-quotes when needed.
               """";

原始字符串字面量还可以与内插字符串结合使用,以在输出字符串中嵌入 {} 字符。 在内插的原始字符串字面量中使用多个 $ 字符,以在输出字符串中嵌入 {} 字符,而无需对这些字符进行转义。

原始字符串字面量的内容不得包含一组长度等于或大于原始字符串字面量分隔符长度的连续 " 字符。 例如,字符串 """" """ """"""""""" """""" """"" """" """ """"""" 的格式就很标准。 但是,字符串 """ """ """""" """" """ 的格式就不正确

原始字符串字面量是在 C# 11 中引入的。

另请参阅