2012-09-21 13 views
1

這似乎是這樣一個不起眼的問題,但這裏有雲:使用DirectoryInfo枚舉連接字符串文字並添加引號。

有沒有一種方法來連接字符串文字與一個DirectoryInfo枚舉(包含文件路徑),同時增加周圍的文件路徑報價?此外,如何防止在將DirectoryInfo枚舉轉換爲字符串時將反斜槓加倍?我的情況是這樣的:

DirectoryInfo filePathDirectory = new DirectoryInfo(filePath); 
Process a = new Process(); 

a.StartInfo.FileName = "C:\\Windows\\system32\\lpr.exe"; 
a.StartInfo.Arguments = "-SServername.Domain.net -Plp " + "\"" + filePathDirectory + "\""; 
a.StartInfo.UseShellExecute = false; 
a.Start(); 
a.WaitForExit(); 

filePathDirectory開始,值爲:

{\\ServerName\Share\Folder\Folder\FileName.xls} 

我認爲這是轉化成一次串連成a.StartInfo.Arguments一個字符串,它被賦予的價值:

-SServername.Domain.net -Plp \"\\\\ServerName\\Share\\Folder\\Folder\\FileName.xls\" 

這很糟糕,因爲路徑中反斜槓的數量增加了一倍。我如何確保沒有反斜槓被添加到路徑中?

最重要的是,要添加一個引號,我使用了反斜槓轉義序列;但是這個轉義序列的反斜槓無意中添加到了我的字符串中。如何在a.StartInfo.Arguments中包含的文件路徑周圍添加引號?

P.S.我希望這是有道理的,如果您需要澄清,請提出問題。

回答

2

反斜槓不加倍,引號的反斜槓也「不存在」。您可以通過Console.WriteLine(a.StartInfo.Arguments)MessageBox.Show(a.StartInfo.Arguments)進行驗證。

你所看到的 - 在調試器中,我假設 - 是用轉義字符而不是翻譯的字符串的表示 - 就像你需要在IDE中輸入它一樣。

例子:

string s = "\""; 

這將顯示在調試器"\"",但它會在屏幕上顯示爲"

enter image description here

+0

你說得對。我只是想 - 這是我的過程引起的一個問題,實際上它似乎是另一回事,這就需要我提出一個新問題。 – Ben