这是我的代码
string path1 = @"C:\Program Files (x86)\Common Files";
string path2 = @"Microsoft Shared";
string path = Path.Combine(path1, path2);
Console.WriteLine(path);
输出提供给我
C:\ Program Files(x86)\ Common Files \ Microsoft Shared
我想在双引号中有任何带空格的文件夹名称,如下所示
C:\“Program Files(x86)”\“Common Files”\“Microsoft Shared”
我怎么能得到它?
答案 0 :(得分:2)
最简单的方法是使用LINQ。
您可以将文件夹路径拆分为列出所有文件夹名称的数组,然后使用Select()
操作每个单独的元素。
在您的情况下,您可能希望:
"{folderName}"
这就是看起来的样子,请注意我已经使用了2 Select()
来表示清晰度&帮助确定不同的步骤。它们可以是一个单一的陈述。
string path1 = @"C:\Program Files (x86)\Common Files";
string path2 = @"Microsoft Shared";
string path = System.IO.Path.Combine(path1, path2);
var folderNames = path.Split('\\');
folderNames = folderNames.Select(fn => (fn.Contains(' ')) ? String.Format("\"{0}\"", fn) : fn)
.ToArray();
var fullPathWithQuotes = String.Join("\\", folderNames);
上述过程的输出是:
C:\"程序文件(x86)" \"公共文件" \" Microsoft共享"
答案 1 :(得分:0)
您可以创建扩展方法
public static class Ex
{
public static string PathForBatchFile(this string input)
{
return input.Contains(" ") ? $"\"{input}\"" : input;
}
}
像
一样使用它var path = @"C:\Program Files (x86)\Common Files\Microsoft Shared";
Console.WriteLine(path.PathForBatchFile());
它使用C#6.0中的string interpolation功能。如果您不使用C#6.0,则可以使用它。
public static class Ex
{
public static string PathForBatchFile(this string input)
{
return input.Contains(" ") ? string.Format("\"{0}\"", input) : input;
}
}