Объединить строковые литералы с перечислением 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\"
Это плохо, потому что количество обратных косых черт в пути удвоилось. Как я могу убедиться, что обратные слеши не добавляются к пути?
Кроме того, чтобы добавить кавычки, я использовал escape-последовательность обратной косой черты; Но обратная косая черта из этой escape-последовательности случайно добавлена в мою строку. Как я могу добавить кавычки вокруг пути к файлу, который содержится в a.StartInfo.Arguments
?
PS Я надеюсь, что это имеет смысл, пожалуйста, задавайте вопросы, если вам нужны разъяснения.
1 ответ
Обратная косая черта не удваивается, и обратная косая черта в кавычках также "не существует". Вы можете проверить это Console.WriteLine(a.StartInfo.Arguments)
или же MessageBox.Show(a.StartInfo.Arguments)
,
То, что вы видите - в предполагаемом отладчике - это представление строки с не переведенными escape-символами - так же, как вам нужно было бы ввести ее в IDE.
Пример:
string s = "\"";
Это будет показано в отладчике как "\""
но он будет отображаться на экране как "
: