繁体   English   中英

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

[英]C# double-quoted path name being escaped when read from file

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

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

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

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

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

无需RegEx ,只需简单的Replace

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

我的第一印象是只写了一些删除引号的开头或结尾的方法...

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

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

字符串bob = @“ c:\\ some file \\ some document”;

@转义了这些反斜杠问题。

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

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

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

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

或类似的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM