C#中如何无需手动转义直接使用含双引号的字符串?
C# 中避免手动转义双引号的字符串处理方案
好的,直接给你梳理C#里能自动处理双引号转义的几种原生方案,完全不用手动逐个加转义符:
逐字字符串(Verbatim Strings):你已经提到的
@开头的写法其实就是C#原生支持的方案,它会原封不动解析字符串内容,唯一需要注意的是字符串里的双引号要写成两个连续的双引号(""),比如:string t = @"Lorem ""Ipsum"" dummy text with ""multiple"" quotes";这种方式从C#早期版本就支持,兼容性拉满。
原始字符串字面量(Raw String Literals,C# 11+):这是C# 11新增的特性,完美匹配你的需求——不需要任何转义操作,直接把包含双引号的内容放进去就行。你可以用3个及以上的双引号来包裹字符串,只要内部的双引号数量不超过包裹的数量,就不会被解析为结束标记,比如:
// 用三个双引号包裹常规内容 string t = """Lorem "Ipsum" dummy text with "any number" of quotes"""; // 如果内容里有三个连续双引号,就用四个双引号包裹,以此类推 string t2 = """"Lorem """Ipsum""" dummy text"""";这种方式和PHP单引号的体验几乎一致,完全不用手动处理转义,用起来特别省心。
总结一下:如果你的项目能用到C# 11及以上版本,优先用原始字符串字面量;如果需要兼容旧版本,就用逐字字符串,这两种都是C#原生支持的方案,不需要额外的方法或关键字。
内容的提问来源于stack exchange,提问作者T.Todua




