如果文件夹中包含空间,如何处理文件路径中的空间
本文关键字:空间 处理 文件 路径 何处理 包含 文件夹 如果 | 更新日期: 2023-09-27 18:00:36
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.IsNullOrWhiteSpace(path) ?
path.Contains(" ") && (!path.StartsWith("'"") && !path.EndsWith("'"")) ?
"'"" + path + "'"" : path :
string.Empty;
}
示例
AddQuotesIfRequired(@"D:'Visual Studio Projects'ProjectOnTFS'ProjectOnTFS");
返回"D:'Visual Studio Projects'ProjectOnTFS'ProjectOnTFS"
AddQuotesIfRequired(@"C:'Test");
返回C:'Test
AddQuotesIfRequired(@"""C:'Test Test'Wrap""");
返回"C:'Test Test'Wrap"
AddQuotesIfRequired(" ");
返回空字符串
AddQuotesIfRequired(null);
返回空字符串
编辑
根据建议,更改了函数的名称,还添加了一个空引用检查。
添加了检查双引号是否已经存在于字符串的开头和末尾,以避免重复。
将字符串检查函数更改为IsNullOrWhiteSpace
,以检查空白以及空或null,如果是,则返回空字符串。
我意识到这是一个旧线程,但对于在我之后看到它的人来说,你也可以这样做:
string myArgument="D:''Visual Studio Projects''ProjectOnTFS''ProjectOnTFS"
通过转义后斜杠,您不必使用@符号。只是另一种选择。