c# - 使用 C# 插值时如何处理变量中的空格?
问题描述
使用字符串插值,您如何处理通过管道传输到其中包含空格的命令的变量?例如,如果您有一个包含空格的变量(如 UNC 路径),您如何处理它?
当“filePath”变量中没有空格时(即\ServerName\testfile.txt),此代码有效:
System.Diagnostics.Process.Start("net.exe", $"use X: \\{filePath} {pwd /USER:{usr}").WaitForExit();
但是,一旦您遇到其中包含空格的路径,上面的命令就不再起作用,因为它无法找到该路径。通常,我会在包含空格的路径周围加上引号,以应对这种情况(在其他语言中,如 PowerShell)。你如何用 C# 插值做类似的事情。
解决方案
它与字符串插值没有任何关系,它与可执行文件如何解析命令行有关。包含空格的单个参数(如路径)应该用引号括起来,以便将它们视为一个参数而不是多个参数。
您可以通过使用反斜杠字符 ( \"
) 转义引号字符来在字符串中添加引号:
var filePath = @"\\server\share\directory with spaces";
var usr = $"{Environment.UserDomainName}\\{Environment.UserName}";
System.Diagnostics.Process
.Start("net.exe", $"use X: \"{filePath}\" pwd /USER:{usr}")
.WaitForExit();
没有字符串插值也是如此:
System.Diagnostics.Process
.Start("net.exe", string.Format("use X: \"{0}\" pwd /USER:{1}", filePath, usr))
.WaitForExit();
推荐阅读
- node.js - 更新 mongodb 时 JavaScript 堆内存不足
- java - MongoDB:如何使用大数据优化聚合查询
- nightwatch.js - 如何在 Nightwatch.js 中以编程方式运行测试?
- java - 对大型矩阵(即 10,000 x 10,000)执行求逆
- vba - 我不断收到错误 3027,我无法更新数据库。我该如何解决这个错误?
- python - 如何将数据框的值用作列并有选择地将值放入其中?
- javascript - 事件处理程序中的错误:TypeError:加载页面时无法读取未定义的属性“应用”
- r - 即使在活动完成后,shinycssloader 也会继续加载
- ansible - Condition based execution in ansible
- python - 将结果更改/打印为大写