请原谅我一个初学者的问题:)我怎样才能符号添加到字符串的结尾在C#
string S="abc";
S+="\";
不会请编译。
string S="abc";
S+="\\";
将使S = “ABC \\”
我怎样才能使S = “ABC \”?
请原谅我一个初学者的问题:)我怎样才能符号添加到字符串的结尾在C#
string S="abc";
S+="\";
不会请编译。
string S="abc";
S+="\\";
将使S = “ABC \\”
我怎样才能使S = “ABC \”?
试试这个:
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
这与OP的第二个片段完全等效,并不能解释发生了什么。 – 2013-02-15 13:34:59
同意 - OP担心他们无法逃避反斜杠字符。他们的第二个例子是正确的,但visual studio调试器显示斜杠仍然存在于字符串中(当它不存在时)。 – RainbowFish 2013-02-15 15:06:07
你的代码秒一块是你想要什么(或逐字字符串其他人建议的@"\"
)和i t只添加一个反斜杠 - 将其打印到控制台,您会看到。
这些代码两段:
S += "\\";
和
S += @"\";
是恰好当量。在这两种情况下,都会附加一个反斜杠。
我怀疑你被调试器视图弄糊涂了,它会转义反斜杠(和其他字符)。您可以通过查看S.Length
,你会看到验证,即使调试器是4,而不是5
注意,它不存在字符串中更改数据,但它将S
的值设置为指代新的字符串,该字符串由最初带有反斜杠的原始字符串组成。 .NET中的字符串对象是不可变的 - 但这是一个完整的其他主题...
您已经有了解决方案。在调试时显示为abc\\
的原因是因为VS会跳出反斜杠,将S
的值输出到控制台窗口,您将看到abc\
。 您可以将@
添加到字符串文字的开头,例如,
string S="abc";
S+= @"\";
这将实现相同的目的。
这与S + =“\\”具有完全相同的效果;在我看来,只是给出另一种实现相同结果的方法并不能真正帮助OP。 – 2013-02-15 13:21:15
编辑一点更多的解释。 – DGibbs 2013-02-15 13:31:30
可以逃脱以@字符反斜线:
string S="abc";
S += @"\";
但这完成你写在你的第二个例子是什么。对此的混淆源于Visual Studio调试器继续转义这些字符,即使您的源字符串只包含一个反斜杠。
这只是给出了与OP的第二段代码相同的结果的替代方法......这仍然会导致混淆,而不解释OP在调试器中看到的内容。 – 2013-02-15 14:54:30
string S = "abs" + "\\";
应该并确实导致abc\
。
您可能看到的是调试器/智能感知器为您呈现字符串的方式。 尝试将字符串打印到控制台或将其显示在文本框中。
你的第二个例子是完全正常的
string S="abc";
S+="\\";
Visual Studio中显示的字符串逃过一劫,这就是为什么你看到的结果字符串两条斜线。如果你不希望使用转义声明字符串这样
@"\"
这不是因为编译编译器是逃逸符号后期待一个字符
string S="abc";
S+="\";
string S="abc";
S+="\\";
Console.WriteLine(S); // This is what you're missing ;)
你会看到你的字符串没有错。
反斜线(\
)是一个转义字符,并允许你获得特殊的字符,你会不会通常能够在要插入的字符串,如"\r\n"
,它代表一个字符NewLine
,或"\""
这基本上给你一个"
字符。
为了获得\
字符,您需要输入"\\"
,这正是您正在做的以及您想要的。
使用逐字(@
)将所有出现的\
替换为\\
,因此@"\" == "\\"
。这通常用于路径和正则表达式,其中大量需要文字\
。毕竟,说出@"C:\MyDirectory\MyFile"
比"C:\\MyDirectory\\MyFile"
更舒服。
使用\ u005c代替\并检查它。 – Rahil2952 2013-02-15 13:20:19
你的第二个例子是正确的。您可能会在监视窗口中看到S =“abc \\”,但这只是IDE聪明并转义字符串中的字符(同样,如果字符串中有换行符,观察窗口将显示“foo \ nbar “) – 2013-02-15 13:27:07
@RossMcNab,你应该做出答案。 – Mizipzor 2013-02-15 13:28:18