如果文件夹包含空格,如何处理文件路径中的空格?
public static void launchProcess(string processName, string arguments, out string output) { Process p = new Process { StartInfo = { UseShellExecute = false, RedirectStandardOutput = true, FileName = processName, Arguments = arguments } }; p.Start(); output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); }
如果我的参数包含文件名,例如:
D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS
然后我得到错误:
它需要双打引号,但也可能需要@来对待字符串逐字 ( 逐字字符串 ),即“\”在字符串中有特殊含义,例如\ t表示选项卡,所以我们要忽略\
所以不仅是双引号,还有@
string myArgument = @"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS";
如果有空格,我在大多数应用程序中使用以下内容(如果需要)在字符串的开头和结尾添加双引号。
public string AddQuotesIfRequired(string path) { return !string.IsNullOrEmpty(path) ? path.Contains(" ") ? "\"" + path + "\"" : path : string.Empty; }
编辑根据建议,更改了函数的名称,并添加了空引用检查。
例子..
AddQuotesIfRequired(@"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS");
返回"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS"
AddQuotesIfRequired(@"C:\Temp");
返回C:\Temp
AddQuotesIfRequired(null);
返回空字符串
我意识到这是一个老线程,但对于那些在我之后看到这个的人,你也可以这样做:
string myArgument="D:\\Visual Studio Projects\\ProjectOnTFS\\ProjectOnTFS"
通过转义反斜杠,您不必使用@符号。 只是另一种选择。