这似乎是一个如此模糊的问题,但在这里:
是否有办法在文件路径周围添加引号的同时将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。我希望这是有道理的,如果您需要澄清,请提出问题。
答案 0 :(得分:2)
反斜杠不会加倍,引号的反斜杠也“不存在”。您可以Console.WriteLine(a.StartInfo.Arguments)
或MessageBox.Show(a.StartInfo.Arguments)
验证它。
您所看到的 - 在我认为的调试器中 - 是转义字符而不是已翻译的字符串的表示形式 - 就像您需要在IDE中输入它一样。
示例:
string s = "\"";
这将在调试器中显示为"\""
,但它会在屏幕上显示为"
: