一种代表双重报价的清洁方式?

时间:2011-09-07 19:41:49

标签: c#

非常简单的问题...只想表示双引号“无需做”或“

我知道的案例:

var s=@"123 "" 456 """;

var s="123 \" 456 \"";

如果我能以某种方式消除这种噪音,那将是一个合理的区别。原因是转义序列\和双引号在我们正在使用的域特定语言(DSL)中具有意义。有时将一些语法内联到C#字符串中很方便。

我想要的是告诉.net不要碰它的方法。也许通过DLR可以获得一些收获?

4 个答案:

答案 0 :(得分:5)

在C#文字中,没有什么可以 - 不要忘记这一切都是在编译时完成的。

如果您不使用单引号,则可以随时执行:

var s = "123 ' 456 '".Replace("'", "\"");

(或选择其他一些你没用多少的角色,然后替换它。)

除此之外,避免在源代码中存储大量数据对这类事情有很大帮助 - 对于测试数据,我经常使用嵌入式资源并在执行时加载它。

答案 1 :(得分:4)

我认为你不能从文件或数据库中读取它们吗?

答案 2 :(得分:2)

是的,肯定有办法做到这一点,我正是因为这个原因而一直使用它。

您创建一个字符串资源集合(打开Project Properties,Resources,确保它在字符串上)并将您的文字字符串放在那里。然后,当您需要其中一个字符串时,使用Properties.Resources.{insert string resource name}引用以纯粹且纯粹的形式收集它!

答案 3 :(得分:1)

为了完整起见,我会提到你可以在C#字符串中使用hex,所以在这种情况下,\x0022。请注意,如果紧跟的字符不是十六进制,则可以省略前导0。