将字符串文字与DirectoryInfo枚举连接并添加引号。

时间:2012-09-21 13:55:31

标签: c# concatenation double-quotes directoryinfo lpr

这似乎是一个如此模糊的问题,但在这里:

是否有办法在文件路径周围添加引号的同时将String Literals与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。我希望这是有道理的,如果您需要澄清,请提出问题。

1 个答案:

答案 0 :(得分:2)

反斜杠不会加倍,引号的反斜杠也“不存在”。您可以Console.WriteLine(a.StartInfo.Arguments)MessageBox.Show(a.StartInfo.Arguments)验证它。

您所看到的 - 在我认为的调试器中 - 是转义字符而不是已翻译的字符串的表示形式 - 就像您需要在IDE中输入它一样。

示例:

string s = "\"";

这将在调试器中显示为"\"",但它会在屏幕上显示为"

enter image description here