String Replace不会替换c#中的双反斜杠

时间:2014-05-07 20:35:53

标签: c# string replace

也许我在这里遗漏了一些东西

我有一个变量dir,看起来像\\\\SERVERNAME\\dir\\subdir

我需要它看起来像\\SERVERNAME\dir\subdir

我使用了string.Replace例程,但它没有替换双斜杠,问题是当我尝试按原样使用路径时,它找不到文件。

我如何使用string.Replace来获取有效路径?

2 个答案:

答案 0 :(得分:2)

dir.Replace(@"\\", @"\")应该可以解决问题。

答案 1 :(得分: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";