2012-09-21 14 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