【问题标题】:Replace \\ with \ in C#在 C# 中将 \\ 替换为 \
【发布时间】:2013-07-29 07:16:30
【问题描述】:

我有一个带有双反斜杠的长字符串(路径),我想用单反斜杠替换它:

string a = "a\\b\\c\\d";
string b = a.Replace(@"\\", @"\");  

这段代码什么都不做......

b 仍然是"a\\b\\c\\d"

我也尝试了不同的反斜杠组合,而不是使用@,但没有运气。

【问题讨论】:

标签: c# string replace escaping verbatim-string


【解决方案1】:

因为您声明了a 而不使用@,所以字符串a 在您的示例中不包含任何双斜杠。事实上,在你的例子中,a == "a\b\c\d",所以Replace 找不到任何可以替换的东西。试试:

string a = @"a\\b\\c\\d";
string b = a.Replace(@"\\", @"\"); 

【讨论】:

  • 我没有声明一个。我在这里展示了它作为一个例子。我是从其他地方得到的
  • 所以你的例子是错误的和误导性的,因此我们无法回答你的问题。你确定你的字符串 "from else else" 实际上包含双斜杠吗?
  • @user990635:仍然:您的 Replace 语句是正确的。它确实删除了双反斜杠(如果有的话)。尝试输出bConsole.WriteLine 自己看看。
  • @user990635 - 请注意您的字符串变量真正包含的内容。请注意"a\\b"@"a\\b"相同。事实上,正如我已经提到的,"a\\b"@"a\b"相同
【解决方案2】:

在 C# 中,不能有 "a\b\c\d" 这样的字符串,因为 \ 具有特殊含义:它会创建一个 escape sequence 以及后面的字母(或数字组合)。

\b 实际上代表一个退格,\c\d 是无效的转义序列(编译器会报错“无法识别的转义序列”)。

那么如何使用简单的\ 创建一个字符串?您必须使用反斜杠来分隔反斜杠:\\(它是表示单个反斜杠的 espace 序列)。

这意味着字符串"a\\b\\c\\d" 实际上代表a\b\c\d(它不代表a\\b\\c\\d,所以没有双反斜杠)。如果您尝试打印此字符串,您将自己看到它。

C# 还有一个称为verbatim string literals(以@ 开头的字符串)的功能,它允许您编写@"a\b\c\d" 而不是"a\\b\\c\\d"

【讨论】:

    【解决方案3】:

    你错了。 "\\"返回\(也就是转义)

    string a = "a\\b\\c\\d";
    System.Console.WriteLine(a);  // prints a\b\c\d
    string b = a.Replace(@"\\", @"\");  
    System.Console.WriteLine(b);  // prints a\b\c\d
    

    你甚至不需要string b = a.Replace(@"\\", @"\");

    【讨论】:

      【解决方案4】:

      这行得通

      你甚至不需要 string b = a.Replace(@"\", @"\");

      但是如果我们通过 c# 代码生成一个 dos 命令...例如:- 删除一个文件 这会有所帮助

      【讨论】:

        【解决方案5】:

        我在 UWP 应用程序的代码中执行此操作。

        foreach (var item in Attendances)
        {
           string a = item.ImagePath;
           string b = a.Replace(@"\\", "/");
           string c = a.Replace("\\", "/");
        
           Console.WriteLine(b);
           Console.WriteLine(a);
           item.ImagePath = c;
        }
        

        没有@ 符号的是实际工作的那个。这是 C# 8 和 C# 9

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-05
          • 1970-01-01
          • 1970-01-01
          • 2011-11-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多