我想将xml代码分配给字符串变量。 我可以通过在python中使用三引号而无需转义单引号或双引号。 在F#或C#中有类似的方法吗?
答案 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
答案 3 :(得分:0)
在C#中,语法为@"some string"