문제

Maybe I am missing something here

I have a variable dir coming in looking something like \\\\SERVERNAME\\dir\\subdir

I need it to look like \\SERVERNAME\dir\subdir

I used string.Replace routine but it did not replace the double slashes, the problem is that when i try to use the path as is, it doesn't find the file.

How would I use string.Replace here in order to get a valid path?

도움이 되었습니까?

해결책 2

In C# the backslash character, "\", is used to escape characters in strings. For example, in the string "Hello\nworld", the "\n" represents a newline character. So, in general, when C# sees a "\" in a string it expects to treat it as part of a special command character, rather than as a literal "\".

So, how do you tell C# that you want a literal backslash to appear in your string, that it isn't part of a special command character? You escape the backslash. And the escape character is also a backslash. So to tell C# that you really want a literal "\" to appear in your string (eg in a file path) you use two backslashes: "\\".

Say I wanted to set a variable to the following path: C:\Temp\FileDrop

In C# I'd have to do the following:

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

I suspect that when you see the value of a variable looking like \\\\SERVERNAME\\dir\\subdir it is escaping the backslash characters so the real value of the variable is \\SERVERNAME\dir\subdir.

By the way, if you're copying and pasting long paths from, say, Windows Explorer, it can be a real pain to have to double up the backslashes to escape them. So C# has a special string literal character, "@". If you prefix a string with a "@" then it will treat the string exactly as written. eg

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

다른 팁

dir.Replace(@"\\", @"\") should do the trick.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top