像F#(或C#)中的python三重引用?

tk.*_*tk. 12 c# python string f#

我想将xml代码分配给字符串变量.我可以通过在python中使用三引号而无需转义单引号或双引号.在F#或C#中有类似的方法吗?

ben*_*ruk 14

F#3.0支持三引号字符串.请参阅Visual Studio F#Team Blog Post 3.0功能.

F#3.0规格 字符串和字符节专门提到了XML的场景:

通过使用三个引号(""")指定三引号字符串,以确保逐字解释包含一个或多个转义字符串的字符串.例如,可以使用三引号字符串来嵌入XML blob:


Tom*_*cek 10

据我所知,C#/ F#中没有与此对应的语法.如果你使用@"str"那么你必须用两个引号替换引号,如果你只是使用"str"那么你需要添加反斜杠.

在任何情况下,都有一些编码":

var str = @"allows
  multiline, but still need to encode "" as two chars";
var str = "need to use backslahs \" here";
Run Code Online (Sandbox Code Playgroud)

但是,当您需要将大型字符串(例如XML数据)嵌入到应用程序中时,最好的做法可能是使用.NET资源(或将数据存储在其他位置,具体取决于您的应用程序).通常不建议在程序中嵌入大型字符串文字.此外,曾经有一个插件用于粘贴XML作为构建XElementC#对象的树,但我不确定它是否仍然存在.

虽然,我个人会投票"""通过Python将其添加到F#中 - 它非常有用,特别是对于交互式脚本.


Jac*_*men 6

如果有人在 C#(而不是 F#)中查找三引号字符串时遇到这个问题,C#11 现在具有原始字符串文字,并且它们(IMO)比 Python 更好(由于缩进的处理方式)!

原始字符串文字是字符串文字的一种新格式。原始字符串文字可以包含任意文本,包括空格、换行符、嵌入引号和其他特殊字符,而无需转义序列。原始字符串文字至少以三个双引号 (""") 字符开头。它以相同数量的双引号字符结尾。通常,原始字符串文字在单行上使用三个双引号来启动字符串,三个双引号单独一行来结束字符串。开始引号后面和结束引号之前的换行符不包含在最终内容中:

string longMessage = """
    This is a long message.
    It has several lines.
        Some are indented
                more than others.
    Some should start at the first column.
    Some have "quoted text" in them.
    """;
Run Code Online (Sandbox Code Playgroud)

结束双引号左侧的任何空格都将从字符串文字中删除。原始字符串文字可以与字符串插值结合使用,以在输出文本中包含大括号。多个$字符表示有多少个连续的大括号开始和结束插值:

var location = $$"""
   You are at {{{Longitude}}, {{Latitude}}}
   """;
Run Code Online (Sandbox Code Playgroud)

前面的示例指定两个大括号开始和结束插值。第三个重复的左大括号和右大括号包含在输出字符串中。

https://devblogs.microsoft.com/dotnet/csharp-11-preview-updates/#raw-string-literals https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp- 11#原始字符串文字