C# 使用包含双引号的字符串(无需手动转义)的任何方法

C# 使用包含双引号的字符串(无需手动转义)的任何方法,c#,C#,假设我想将包含许多双引号的文本赋给变量。但是,唯一的办法似乎是手动逃脱: string t = "Lorem \"Ipsum\" dummy...... //or// string t = @"Lorem ""Ipsum"" dummy..... 有没有办法避免手动转义,而是使用我在C键盘/方法中不知道的通用方法来自动转义?在PHP中,它非常简单,只需使用一个引号: $t = 'Lorem "Ipsum" dummy ....... 顺便说一句,请不要批评我为什么你需要使用这个或等等。我需要

假设我想将包含许多双引号的文本赋给变量。但是,唯一的办法似乎是手动逃脱:

string t = "Lorem \"Ipsum\" dummy......
//or//
string t = @"Lorem ""Ipsum"" dummy.....
有没有办法避免手动转义,而是使用我在C键盘/方法中不知道的通用方法来自动转义?在PHP中,它非常简单,只需使用一个引号:

$t = 'Lorem "Ipsum" dummy .......

顺便说一句,请不要批评我为什么你需要使用这个或等等。我需要回答我所问的问题。

否。在C语法中,定义字符串文本的唯一方法是使用双引号,前面带有可选的修饰符@和/或$。单引号是唯一的,不能以PHP允许的方式使用-在任何版本中,包括当前的8.0。 请注意,PHP方法也需要escape,特别是在英语中,它经常被用作撇号

为了支持这一点,当前C中字符串文字的EBNF仍然是:

regular_string_literal '"' { regular_string_literal_character } '"'
版本8.0中编译器的唯一变化是,现在前缀修饰符$interpolated和@verbatim的顺序可以是@$或$@;在早期版本中,这一点曾经令人烦恼

备选方案:

将其保存到文件并使用file.ReadAllText进行赋值,或将其嵌入为托管资源,然后编译器将在您选择的命名空间中提供一个变量,并将逐字文本作为其运行时值

或者使用单引号或您选择的任何其他特殊字符,然后

var t = @"Text with 'many quotes' inside".Replace("'", @"""");

其中,为了简洁起见,Replace部分可以建模为String类的扩展

我知道这个答案可能不令人满意,但C sytnax在写这个答案时根本不允许你做这样的事情

我认为最好的解决办法是利用资源。从资源中添加/删除和使用字符串非常简单:

内部课程计划 { 私有静态无效字符串[]args { 字符串myStringVariable=Strings.MyString; Console.writelinemystring变量; } } 字符串是不带扩展名resx的资源文件的名称:

MyString是资源文件中字符串的名称:


我可能错了,但我猜想这是最简单的解决方案。

如果是大量文本,请将其放入文件中,并将其用作嵌入式资源。如果您想要类似于使用单引号的内容,可以使用如下内容:string t=Lorem'Ipsum'dummy………Replace',\;假设字符串中没有单引号。请在IDE中选择文本,使用“查找并替换”方法替换“到”选项中出现的所有内容。我认为这将是最简单的。PHP方法如何与…行业标准。。。在示例中?此处列出的一些其他选项;虽然没有比用斜杠转义更简单的了:。根据您的需要,一个可能是合适的,但?不,PHP也不会受到影响,如果文本有'单引号。您可以用双引号-->abc'd eftgeg'zvbfsdfg。如果你强调混合文本,包括单文本和双文本,那么这对任何语言都是个问题。但是这个问题是专门针对双引号的。你在你的示例文本中有一个混合的情况,这就是为什么我要解决这个问题。这不仅是最好的解决方案,也是去IMHO的方法。它简化了编辑、管理,并且可以在WF和WPF以及ASP中轻松地用于本地化。