也許我失去了一些東西在這裏字符串替換不替換雙反斜槓在C#
我有一個變量dir
在看起來像\\\\SERVERNAME\\dir\\subdir
未來我需要它看起來像\\SERVERNAME\dir\subdir
我使用了string.Replace例程,但它並沒有替換雙斜槓,問題是當我嘗試使用路徑時,它沒有找到該文件。
我該如何使用string.Replace在這裏獲得一個有效的路徑?
也許我失去了一些東西在這裏字符串替換不替換雙反斜槓在C#
我有一個變量dir
在看起來像\\\\SERVERNAME\\dir\\subdir
未來我需要它看起來像\\SERVERNAME\dir\subdir
我使用了string.Replace例程,但它並沒有替換雙斜槓,問題是當我嘗試使用路徑時,它沒有找到該文件。
我該如何使用string.Replace在這裏獲得一個有效的路徑?
在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";
謝謝!你回答了。我把它連接起來,有些部分就是這樣,有些部分是用@逃脫的。 – sarsnake
很高興知道答案是有用的。 –
dir.Replace(@"\\", @"\")
應該做的伎倆。
向我們顯示您的代碼! –
您確定這不僅僅是調試器向您展示它的方式嗎?它這樣做。 –