【问题标题】:printing backslashes in file paths在文件路径中打印反斜杠
【发布时间】:2014-08-04 16:12:43
【问题描述】:

假设我有一个名称以“n”开头的文件(如“nFileName.doc”)。为什么当我将其路径作为字符串并将其打印到控制台时,“\n”序列不被视为转义序列(并且更广泛 - 路径中的单个反斜杠不被视为转义字符)?

string fileName = Directory.GetFiles(@"C:\Users\Wojtek\Documents").Where(path => Path.GetFileName(path).StartsWith("n")).First();

string str = "Hello\nworld";

Console.WriteLine(fileName); // C:\Users\Wojtek\Document\nFileName.doc
Console.WriteLine(str);      //Hello
                             //world

【问题讨论】:

标签: c#


【解决方案1】:

转义的概念仅与源代码 代码(以及其他特定情况,如正则表达式)相关。 与将字符串打印到屏幕时无关 - Console.WriteLine 没有转义序列之类的概念。

例如,考虑:

string x = @"\n";

这是一个包含两个字符的字符串 - 一个反斜杠和 n。所以当你把它打印到屏幕上时,你得到一个反斜杠和n

【讨论】:

    【解决方案2】:

    因为fileName 将等于

    C:\\Users\\Wojtek\\Document\\nFileName.doc
    

    在您的代码中,因此文件名开头的 n 不会被视为任何转义字符的一部分。

    【讨论】:

      【解决方案3】:

      因为n 之前的反斜杠 已经在您的文件路径中转义了。考虑一下:

      Console.WriteLine("\\n");
      

      这会将\n 写入控制台,因为backslash 已转义...

      为了验证这个调试你的程序并查看fileName 的值,你会看到所有的反斜杠都被转义了。

      【讨论】:

        猜你喜欢
        • 2014-02-04
        • 2013-07-23
        • 2017-03-16
        • 2023-04-08
        • 2013-11-10
        • 2016-11-20
        • 2019-01-13
        • 1970-01-01
        相关资源
        最近更新 更多