我正在尝试读取包含文件名列表的文本输入文件(每行一个)。但是,如果用户双引号路径(因为它有一个空格),我遇到了一个问题。
例如,普通输入文件可能具有:
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 \“”等)。当我尝试打开文件时,这会成为一个问题(我可以理解得到无效的字符异常)。我的问题是,我该如何解决这个问题?我想允许用户输入引用的字符串并正确处理它们。我的第一印象是只写一个剥掉开头或结尾引号的方法,但我认为可能有更好的方法。
答案 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('"',''));
或类似的是我的建议。