【问题标题】:String.replace "\\" with "/"字符串。用“/”替换“\\”
【发布时间】:2013-05-01 07:02:00
【问题描述】:

似乎有很多关于此的问题,但我发现的问题似乎都不适合我。

我的代码:

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

这会返回categorysubFoldername 相同的字符串,即:

"Parent/Sub\\Sub sub".

我真正想要的是:

"Parent/Sub/Sub sub"

【问题讨论】:

  • "Parent/Sub\\Sub sub"(没有前导 @)包含 单个 \ 字符。所以替换找不到它。然后您在调试器中检查结果,它显示字符串,因为您需要将它们作为常规文字(例如,它转义 \ 字符)
  • 谢谢,有道理。

标签: c# asp.net string replace escaping


【解决方案1】:

试试吧

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

它会起作用,因为category = "Parent/Sub\\Sub sub"; 包含一个\

【讨论】:

  • 完美!谢谢,只要允许,我就会接受这个答案。
  • 您可以将@"/" 替换为"/" ;-)
【解决方案2】:

正如Damien_The_Unbeliever在他的comment中所说,当你将"Parent/Sub\\Sub sub"写成一个字符串时,实际上它只包含一个\字符。所以,String.Replace 方法在你的字符串中找不到\\

当您使用 verbatim string literal 时,您的字符串将是完全您编写它的方式。

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

输出将是;

Parent/Sub/Sub sub

这是DEMO

【讨论】:

    【解决方案3】:

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

    所以你要么需要

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

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

    【讨论】:

    • 我正在查看 VS 调试器。现在说得通了。
    【解决方案4】:
    string category = subFolderName.Replace(@"\", "/");
    

    使用这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2023-03-04
      • 2011-06-13
      • 1970-01-01
      • 2020-08-31
      • 2014-08-31
      相关资源
      最近更新 更多