C# String.replace"\\&引用;加上/&引用;

C# String.replace"\\&引用;加上/&引用;,c#,asp.net,string,replace,escaping,C#,Asp.net,String,Replace,Escaping,围绕这一点似乎有很多问题,但我发现没有一个对我有用 我的代码: string subFolderName = category = "Parent/Sub\\Sub sub"; string category = subFolderName.Replace(@"\\", @"/"); 这会将类别作为与子文件夹名相同的字符串返回,即: "Parent/Sub\\Sub sub". 我真正想要的是: "Parent/Sub/Sub sub" 试试看 string category = subF

围绕这一点似乎有很多问题,但我发现没有一个对我有用

我的代码:

string subFolderName = category = "Parent/Sub\\Sub sub";
string category = subFolderName.Replace(@"\\", @"/");
这会将
类别
作为与
子文件夹名
相同的字符串返回,即:

"Parent/Sub\\Sub sub".
我真正想要的是:

"Parent/Sub/Sub sub"
试试看

string category = subFolderName.Replace(@"\", @"/");
它将起作用,因为
category=“Parent/Sub\\Sub”只包含一个
\

正如his中所说,当您将
“Parent/Sub\\Sub”
作为字符串编写时,实际上它只包含一个
\
字符。因此,方法无法在字符串中找到
\\

当您使用时,您的字符串将与您编写它的方式完全一致

string subFolderName = category = @"Parent/Sub\\Sub sub";
string category = subFolderName.Replace(@"\\", @"/");
Console.WriteLine(category);
Outpuw将是

Parent/Sub/Sub sub

这是一个。

您如何看待类别的内容?如果您正在使用VS调试器,则它将转义字符串,因此字符串中的
\
将显示为
\\

所以你要么需要

string category = subFolderName.Replace(@"\", @"/");


使用此选项。

“父级/Sub\\Sub子级”
(不带前导的
@
)包含单个\字符。所以替换者找不到它。然后,您将在调试器中检查结果,调试器将字符串显示为您需要的常规文本(例如,它将转义\字符)。谢谢,这很有意义。太好了!谢谢,我会尽快接受这个答案。你可以用
“/”
;-)替换
@“
)我正在查看VS调试器。现在有道理了。
string category = subFolderName.Replace("\\", "/");
string category = subFolderName.Replace(@"\", "/");