假设我有一个名称以" 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
答案 0 :(得分:4)
转义的概念仅与源代码(以及正则表达式等其他特定情况)相关。将字符串打印到屏幕时,不相关 - Console.WriteLine
没有任何转义序列这样的概念。
例如,考虑:
string x = @"\n";
这是一个包含两个字符的字符串 - 反斜杠和n
。因此,当您将其打印到屏幕上时,得到反斜杠并n
。
答案 1 :(得分:1)
因为fileName
将等于
C:\\Users\\Wojtek\\Document\\nFileName.doc
在您的代码中,因此文件名开头的n
不会被视为任何转义字符的一部分。
答案 2 :(得分:0)
因为n
之前的反斜杠已在文件路径中转义。考虑一下:
Console.WriteLine("\\n");
这会将\n
写入控制台,因为backslash
已转义...
为了验证此调试您的程序并查看fileName
的值,您将看到所有反斜杠都被转义。