如何在C#中将\符号添加到字符串的末尾

时间:2013-02-15 13:17:36

标签: c# string escaping

请原谅我一个初学者的问题:)

string S="abc";
S+="\";

不会编译。

string S="abc";
S+="\\";

将使S =“abc \\”

如何使S =“abc”?

8 个答案:

答案 0 :(得分:14)

你的第二段代码 你想要的东西(或其他人建议的逐字字符串文字@"\"),它只添加一个反斜杠 - 将它打印到控制台和你会看到的。

这两段代码:

S += "\\";

S += @"\";

完全等同于。在这两种情况下,都会附加一个反斜杠 1

我怀疑你对调试器视图感到困惑,调试器视图会转义反斜杠(以及其他一些字符)。您可以通过查看S.Length来验证调试器,您将看到它是4而不是5。


1 请注意,它不会更改现有字符串中的数据,但会将S的值设置为引用 new 字符串,由原件组成,末尾有反斜杠。 .NET中的字符串对象是不可变的 - 但这是另一个主题......

答案 1 :(得分:5)

答案 2 :(得分:4)

string S = "abs" + "\\";  

应该而且确实会产生abc\

您可能看到的是调试器/智能感知器为您显示字符串的方式。 尝试将字符串打印到控制台或将其显示在文本框中。

答案 3 :(得分:2)

您已经有了解决方案。它在调试时显示为abc\\的原因是因为VS将转义反斜杠,将S的值打印到控制台窗口,您将看到abc\。 您可以在字符串文字的开头添加@,例如

string S="abc";
S+= @"\";

这将实现同样的目标。

答案 4 :(得分:1)

您可以使用@ character:

来转义反斜杠
string S="abc";
S += @"\";

但这完全符合你在第二个例子中所写的内容。对此的困惑源于Visual Studio调试器继续转义这些字符的事实,即使您的源字符串只包含一个反斜杠。

答案 5 :(得分:1)

你的第二个例子非常好

string S="abc";
S+="\\";

Visual Studio显示字符串转义,这就是您在结果字符串中看到两个斜杠的原因。如果你不想像这样使用转义声明字符串

@"\"

这不是编译,因为编译器在转义符号

之后需要一个字符
string S="abc";
S+="\";

答案 6 :(得分:0)

string S="abc";
S+="\\";
Console.WriteLine(S); // This is what you're missing ;)

你会看到你的字符串没有错。

反斜杠(\)是一个转义字符,允许您获取通常无法在字符串中插入的特殊字符,例如"\r\n",表示{ {1}}字符,或基本上为您提供NewLine字符的"\""

要获得"字符,您需要输入\,这正是您正在做的事情,也是您想要的。

使用逐字("\\")将所有@替换为\,所以\\。这通常用于路径和正则表达式,其中需要大量文字@"\" == "\\"。毕竟说\@"C:\MyDirectory\MyFile"更舒服。

答案 7 :(得分:-2)

试试这个

 string s="abc";
 s = s+"\\";
相关问题