用转义序列连接两个字符串

时间:2013-11-07 09:31:33

标签: c# string escaping concatenation

我正在使用C#连接带有转义序列的两个字符串,我想跳过所以我在每个字符串之前使用@符号。它看起来像这样:

string firstString = @"Use \n for line break. ";
string secondString = @"Use \b for backspace";
return firstString + secondString;

问题是:是否会在返回的值中跳过转义序列?;

4 个答案:

答案 0 :(得分:2)

@""是一个逐字字符串,将转义序列视为文字。

因此,\n \b将被转义并保持不变..

答案 1 :(得分:2)

其他答案当然是正确的。为了说清楚;

这涵盖在section 2.4.4.5 of the C# specification

  

2.4.4.5字符串文字

     

C#支持两种形式的字符串文字:常规字符串文字和逐字字符串文字。

     

常规字符串文字由用双引号括起来的零个或多个字符组成,如“hello”中所示,并且可以包括简单转义序列(例如用于制表符的\ t)和十六进制和Unicode转义序列。

     

逐字字符串文字由@字符后跟双引号字符,零个或多个字符以及结束双引号字符组成。一个简单的例子就是@“你好”。在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是quote-escape-sequence。特别是,简单的转义序列和十六进制和Unicode转义序列不会在逐字字符串文字中处理。逐字字符串文字可能跨越多行。

所以当你使用verbtaim字符串文字时就像;

string firstString = @"Use \n for line break. ";
string secondString = @"Use \b for backspace";
returns firstString + secondString; 

结果将是;

Use \n for line break. Use \b for backspace

当您使用常规字符串文字时;

string firstString = "Use \n for line break. ";
string secondString = "Use \b for backspace";
returns firstString + secondString; 

结果将是;

Use
 for line break. Use for backspace

因为\n是新行转义序列而\b是退格转义序列。对于所有列表,请查看;

答案 2 :(得分:0)

不,它会打印出来,因为它们被视为普通文本,因为“@”符号。

为什么不运行代码呢?

答案 3 :(得分:0)

firstString + secondStringString.Concat(firstString, secondString)

的快捷方式

Concat()方法只是按原样连接两个字符串。它不解释其内容。所以反斜杠字符将保留在那里。