簡體   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