请原谅我一个初学者的问题:)
string S="abc";
S+="\";
不会编译。
string S="abc";
S+="\\";
将使S =“abc \\”
如何使S =“abc”?
答案 0 :(得分:14)
你的第二段代码 你想要的东西(或其他人建议的逐字字符串文字@"\"
),它只添加一个反斜杠 - 将它打印到控制台和你会看到的。
这两段代码:
S += "\\";
和
S += @"\";
完全等同于。在这两种情况下,都会附加一个反斜杠 1 。
我怀疑你对调试器视图感到困惑,调试器视图会转义反斜杠(以及其他一些字符)。您可以通过查看S.Length
来验证调试器,您将看到它是4而不是5。
1 请注意,它不会更改现有字符串中的数据,但会将S
的值设置为引用 new 字符串,由原件组成,末尾有反斜杠。 .NET中的字符串对象是不可变的 - 但这是另一个主题......
答案 1 :(得分:5)
试试这个:
String S = "abc";
S += @"\";
@
=逐字字符串文字
http://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx
http://msdn.microsoft.com/en-us/library/vstudio/362314fe.aspx
答案 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+"\\";