請原諒我一個初學者的問題:)我怎樣才能符號添加到字符串的結尾在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