如何在带有空格的文件夹名称周围使用双引号
本文关键字:周围使 文件夹 空格 | 更新日期: 2023-09-27 18:29:43
这是我的代码
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: ''"程序文件(x86)"''"通用文件"''"Microsoft Shared"
我怎么能拿到?
最简单的方法是使用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 Shared"
您可以创建一个扩展方法
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中的字符串插值功能。如果您没有使用C#6.0,您可以使用它。
public static class Ex
{
public static string PathForBatchFile(this string input)
{
return input.Contains(" ") ? string.Format("'"{0}'"", input) : input;
}
}