2014-05-07 181 views
1

也許我失去了一些東西在這裏字符串替換不替換雙反斜槓在C#

我有一個變量dir在看起來像\\\\SERVERNAME\\dir\\subdir

未來我需要它看起來像\\SERVERNAME\dir\subdir

我使用了string.Replace例程,但它並沒有替換雙斜槓,問題是當我嘗試使用路徑時,它沒有找到該文件。

我該如何使用string.Replace在這裏獲得一個有效的路徑?

+1

向我們顯示您的代碼! –

+5

您確定這不僅僅是調試器向您展示它的方式嗎?它這樣做。 –

回答

1

在C#中,反斜線字符「\」用於轉義字符串中的字符。例如,在字符串「Hello \ nworld」中,「\ n」表示換行符。因此,一般來說,當C#在字符串中看到一個「\」時,它希望將其視爲特殊命令字符的一部分,而不是字面上的「\」。

那麼,您如何告訴C#您希望文字反斜槓出現在您的字符串中,它不是特殊命令字符的一部分?你逃避了反斜槓。轉義字符也是反斜槓。所以爲了告訴C#你真的想要一個文字「\」出現在你的字符串中(例如在一個文件路徑中),你使用兩個反斜槓:「\\」。

說我想設置一個變量以下路徑:C:\ TEMP \ FileDrop

在C#中我必須做到以下幾點:

string myPath = "C:\\Temp\\FileDrop"; 

我懷疑,當你看到變量的值看起來像\\\\SERVERNAME\\dir\\subdir它正在轉義反斜槓字符,因此變量的實際值爲\\SERVERNAME\dir\subdir。順便說一下,如果你從Windows資源管理器複製並粘貼較長的路徑,那麼必須將反斜槓加倍以避開它們可能是一件非常痛苦的事情。所以C#有一個特殊的字符串文字字符「@」。如果你在字符串前加一個「@」,那麼它將完全按照寫入的方式處理字符串。例如

string myPath = @"C:\Temp\FileDrop"; 
+0

謝謝!你回答了。我把它連接起來,有些部分就是這樣,有些部分是用@逃脫的。 – sarsnake

+0

很高興知道答案是有用的。 –

2

dir.Replace(@"\\", @"\")應該做的伎倆。