【问题标题】:Unrecognized escape sequence for path string containing backslashes包含反斜杠的路径字符串无法识别的转义序列
【发布时间】:2010-11-21 03:10:14
【问题描述】:

以下代码为每个反斜杠生成有关“无法识别的转义序列”的编译器错误:

string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

我想我需要转义反斜杠?我该怎么做?

【问题讨论】:

    标签: c# .net string path escaping


    【解决方案1】:

    您可以每次使用双反斜杠

    string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
    

    或使用@符号

    string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
    

    【讨论】:

    • 这也有助于解决我遇到的 Html.TextBoxFor 问题。在正则表达式解析 Unrecognized 转义序列之前使用 @ 会导致双反斜杠失败。
    【解决方案2】:

    试试这个:

    string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
    

    问题在于,在字符串中,\ 是转义字符。通过使用@ 符号,您可以告诉编译器忽略转义字符。

    你也可以通过转义\

    string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
    

    【讨论】:

    【解决方案3】:
    var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
    

    【讨论】:

    • 在一个小音符上,一个 " 然后像 "" 一样被转义
    【解决方案4】:

    如果您的字符串是文件路径,如您的示例所示,您还可以使用 Unix 样式的文件路径:

    string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";
    

    但其他答案对 C# 中的字符串转义有更通用的解决方案。

    【讨论】:

      【解决方案5】:
      string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
      

      这将起作用,或者前面的示例也将起作用。 @"..." 表示按字面意思对待引号之间的所有内容,所以你可以这样做

      @"Hello
      world"
      

      包含文字换行符。我更老派,更喜欢用“\\”转义“\”

      【讨论】:

      • 但是 double " 不是字面意思。
      猜你喜欢
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      相关资源
      最近更新 更多