Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串替换不';t替换c中的双反斜杠#_C#_String_Replace - Fatal编程技术网

C# 字符串替换不';t替换c中的双反斜杠#

C# 字符串替换不';t替换c中的双反斜杠#,c#,string,replace,C#,String,Replace,也许我错过了什么 我有一个变量dir,看起来像\\\\SERVERNAME\\dir\\subdir 我需要它看起来像\\SERVERNAME\dir\subdir 我使用了string.Replace例程,但它没有替换双斜杠,问题是当我尝试按原样使用路径时,它找不到文件 如何在此处使用string.Replace以获取有效路径?dir.Replace(@“\\”,@“\”)应该可以做到这一点。在C中,反斜杠“\”用于转义字符串中的字符。例如,在字符串“Hello\nworld”中,“\n”表示

也许我错过了什么

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

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

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

如何在此处使用string.Replace以获取有效路径?

dir.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";

您确定这不仅仅是调试器向您显示它的方式吗?是的,谢谢!是你做的。我把它连接起来,有些部分是原样的,有些部分是带着@逃逸的。很高兴知道答案很有用。