我想要獲取具有\\\
值的字符串的長度。當在c#中使用長度屬性時,'\'字符被視爲一個字符
例如
"C:\\\Dir1\\\Dir2\\\Dir3\\\Dir4\\\flower.bmp"
該示例的長度爲38個字符。
當我使用長度屬性的長度爲33,基本上它是一種治療\\\
爲一個字符。
我一直在使用StringInfo.LengthInTextElements
等各種方式,試圖得到這個工作,但沒有喜悅審判。
我想要獲取具有\\\
值的字符串的長度。當在c#中使用長度屬性時,'\'字符被視爲一個字符
例如
"C:\\\Dir1\\\Dir2\\\Dir3\\\Dir4\\\flower.bmp"
該示例的長度爲38個字符。
當我使用長度屬性的長度爲33,基本上它是一種治療\\\
爲一個字符。
我一直在使用StringInfo.LengthInTextElements
等各種方式,試圖得到這個工作,但沒有喜悅審判。
我的直覺說你有一個更根本的問題,但你嘗試過包裝它一個文字字符串?
string myString = @'C:\\Dir1\\Dir2\\Dir3\\Dir4\\flower.bmp'
它是一個字符。如果你希望它是2個字符開頭或者使用@也許\\兩次(沒試過..現在檢查)
你需要添加反引號(\)來正確顯示'\\\\'。 – 2013-05-03 15:58:35
10倍科林,我看到它不好,所以我剛剛寫了「兩次」。 :-) – Dani 2013-05-03 15:59:26
由於字符\
用於將字符串中的轉義字符,\\
實際上代表\
字符字面。
嘗試逐字字符串,如果你想\\
被作爲兩個字符處理:
@"C:\\Dir1\\Dir2\\Dir3\\Dir4\\flower.bmp"
這就是我一直在尋找的。謝謝。 – hungryhorse 2013-05-03 16:02:25
這是因爲\\
在C#字符串被稱爲escape sequence。您的代碼中的字符串:
"C:\\Dir1\\Dir2\\Dir3\\Dir4\\flower.bmp"
當程序加載時,它將成爲磁盤和內存中的字符串。
"C:\Dir1\Dir2\Dir3\Dir4\flower.bmp"
所以,你的例子的長度確實是 33個字符。原始字符串雖然可能是38個字符的代碼,但僅代表33個真實字符。
33是正確的 - \\
確實只有一個字符,即\
。只有調試器顯示它已被轉義(例如,\
分別對於\n
或\r
,換行和回車分別具有特殊含義)。
反斜槓\
是一個轉義字符,用於在您的字符串中放入特殊字符,如\t
爲製表符,\n
爲換行符。雙反斜線\\
將插入一個反斜槓編譯字符串,而不是你的預期2.答案是使用C#功能@
在你的字符串,防止逃逸或逃避所有的反斜線面前 - 它看起來像"C:\\\\Dir1\\\\Dir2\\\\Dir3\\\\Dir4\\\\flower.bmp"
你應該發佈更多的代碼,所以我們也可以看到爲什麼你要走這條路。 – 2013-05-03 15:57:05
\\ IS一個字符,它的轉義字符/序列。請參閱http://blogs.msdn。com/b/csharpfaq/archive/2004/03/12/what-character-escape-sequences-are-available.aspx – asawyer 2013-05-03 15:57:22