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

时间:2010-05-15 21:21:31

标签: c# python string f#

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

4 个答案:

答案 0 :(得分:14)

F#3.0支持三引号字符串。见Visual Studio F# Team Blog Post on 3.0 features.

F# 3.0 Spec 字符串和字符部分专门提到了XML方案:

  

使用三个引号指定三引号字符串   (“”“)以确保包含一个或多个转义的字符串   字符串是逐字解释的。例如,三引号字符串   可用于嵌入XML blob:

答案 1 :(得分:10)

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

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

var str = @"allows
  multiline, but still need to encode "" as two chars";
var str = "need to use backslahs \" here";

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

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

答案 2 :(得分:1)

正如shoosh所说,你想在C#中使用逐字字符串文字,其中字符串以@开头,并用双引号括起来。唯一的例外是如果你需要在字符串中加一个双引号,在这种情况下你需要加倍它

System.Console.WriteLine(@"Hello ""big"" world");

会输出

Hello "big" world

http://msdn.microsoft.com/en-us/library/362314fe.aspx

答案 3 :(得分:0)

在C#中,语法为@"some string"

see here