从文件读取时,C#双引号路径名称被转义

时间:2010-03-25 15:55:24

标签: c# file-io escaping

我正在尝试读取包含文件名列表的文本输入文件(每行一个)。但是,如果用户双引号路径(因为它有一个空格),我遇到了一个问题。

例如,普通输入文件可能具有:
C:\测试\ test.tiff
C:\测试\ anothertest.tiff
C:\测试\ lasttest.tiff

我的代码(“C:\\ test \\ test.tiff”等)可以很好地读取这些内容

但是,如果我有以下输入文件:
“C:\ test with spaces \ test.tiff”
“C:\ test with spaces \ anothertest.tiff”
“C:\ test with spaces \ lasttest.tiff”

这些用双引号和全部读取(“\”C:\\ test with spaces \\ test.tiff \“”等)。当我尝试打开文件时,这会成为一个问题(我可以理解得到无效的字符异常)。我的问题是,我该如何解决这个问题?我想允许用户输入引用的字符串并正确处理它们。我的第一印象是只写一个剥掉开头或结尾引号的方法,但我认为可能有更好的方法。

5 个答案:

答案 0 :(得分:2)

无需简单RegEx即可执行的Replace

var s = s.Replace("\"", "");

答案 1 :(得分:1)

  

我的第一印象是写作   剥离的一个小方法   开头或结尾的引号......

是的,那也是我要做的。 =)

答案 2 :(得分:1)

也许尝试使用字符串文字?

string bob = @“c:\ some file \ some document”;

@逃避了这些反斜杠问题。

答案 3 :(得分:0)

如果每行只有一个文件,则可以执行Regex.Replace(PathLine,"\"","")

如果不这样做,则需要每次PathLine.Split(new string[] { "\" ", "\"\n" }, StringSplitOptions.RemoveEmptyEntries);分开,然后删除开头“

答案 4 :(得分:-1)

我认为与简单的替换相比,RegEx非常重,所以

File.ReadAllText(path.Replace('"',''));

或类似的是我的建议。