C# 引号中的C变量

C# 引号中的C变量,c#,C#,使用字符串插值,如何处理通过管道传输到命令中的变量(其中包含空格)?例如,如果您有一个变量,其中像UNC路径一样有空格,您如何处理它 当filePath变量中不存在空格时,此代码起作用,即:\ServerName\testfile.txt: 例如:System.Diagnostics.Process.Startnet.exe,$use X:\{filePath}{pwd/USER:{usr}.WaitForExit 但是,一旦遇到包含空格的路径,上面的命令就不再有效,因为它无法找到该路径。通常,

使用字符串插值,如何处理通过管道传输到命令中的变量(其中包含空格)?例如,如果您有一个变量,其中像UNC路径一样有空格,您如何处理它

当filePath变量中不存在空格时,此代码起作用,即:\ServerName\testfile.txt:

例如:System.Diagnostics.Process.Startnet.exe,$use X:\{filePath}{pwd/USER:{usr}.WaitForExit

但是,一旦遇到包含空格的路径,上面的命令就不再有效,因为它无法找到该路径。通常,我会在包含空格的路径周围加引号,以在其他语言(如PowerShell)中解决此问题。如何使用C插值进行类似操作。

使用$

void Main()
{
    string pwd = "test";
    var myVar = $"This is a  {pwd}";
    var folder = "MyFolder";
    var myVarWithPaths = $"C:\\{folder}";
    Console.WriteLine(myVar);
    Console.WriteLine(myVarWithPaths);
}
输出

这是一个测试

C:\MyFolder

使用$

void Main()
{
    string pwd = "test";
    var myVar = $"This is a  {pwd}";
    var folder = "MyFolder";
    var myVarWithPaths = $"C:\\{folder}";
    Console.WriteLine(myVar);
    Console.WriteLine(myVarWithPaths);
}
输出

这是一个测试

C:\MyFolder

C 6.0+:

System.Diagnostics.Process.Start("net.exe", @$"use X: \\Servername\share {pwd} /USER:{usr}").WaitForExit();
C<6.0:

System.Diagnostics.Process.Start("net.exe", @"use X: \\Servername\share " + pwd + " /USER: " + usr).WaitForExit();
C 6.0+:

System.Diagnostics.Process.Start("net.exe", @$"use X: \\Servername\share {pwd} /USER:{usr}").WaitForExit();
C<6.0:

System.Diagnostics.Process.Start("net.exe", @"use X: \\Servername\share " + pwd + " /USER: " + usr).WaitForExit();
C 6.0引入了字符串插值,它通过在带引号的文本字符串前面加上$字符来使用

e、 g

还可以嵌入多个插值字符串以及条件

var i = 0;
var s = $"i is: {(i == 1 ? $"i is {1}" : "i is not 1")}";
这可以与前缀为@的字符串文字组合使用

基本上,您可以在插值字符串中编写几乎任何普通表达式语句,例如调用方法:

var s = $"i is {GetValueOfI() - 100}";
对于不是System.String的类型,结果值将使用该类型ToString方法的实现

请参阅:

C 6.0引入了字符串插值,它通过在带引号的文本字符串前面加$character来使用

e、 g

还可以嵌入多个插值字符串以及条件

var i = 0;
var s = $"i is: {(i == 1 ? $"i is {1}" : "i is not 1")}";
这可以与前缀为@的字符串文字组合使用

基本上,您可以在插值字符串中编写几乎任何普通表达式语句,例如调用方法:

var s = $"i is {GetValueOfI() - 100}";
对于不是System.String的类型,结果值将使用该类型ToString方法的实现


请参阅:

谢谢,$和花括号起作用了。工作命令如下:System.Diagnostics.Process.Startnet.exe,$use X:\\ServerName\share{pwd}/USER:{usr}.WaitForExit;更正,命令是:System.Diagnostics.Process.Startnet.exe,$use X:\\\\ServerName\\share{pwd}/USER:{usr}.WaitForExit;如果我在花括号内调用变量,并且如果filePath和usr都包含至少一个反斜杠,我将如何编写此代码以应用正确数量的反斜杠?System.Diagnostics.Process.Startnet.exe,$use X:\{filePath}{pwd}/USER:{usr}.WaitForExit;注意:当我手动填充文本以代替变量时,此命令有效,因此我认为它必须与C如何转换这些变量字符串有关。System.Diagnostics.Process.Startnet.exe,$use X:\\\\ServerName\\share{pwd}/USER:domain\username.WaitForExit;@dguth8当您使用两个反斜杠时,如我的示例$C:\\{文件夹},您告诉C的是转义\并将其用作字符串序列的一部分,如果不将转义字符用作反斜杠,则将导致编译错误:只能通过在插值字符串中加倍…来转义字符。我的观点是,您需要构造包含这些转义的序列路径d个字符以获得最终结果谢谢,$和大括号起作用。工作命令如下:System.Diagnostics.Process.Startnet.exe,$use X:\\ServerName\share{pwd}/USER:{usr}.WaitForExit;更正,命令是:System.Diagnostics.Process.Startnet.exe,$use X:\\\ServerName\\share{pwd}/USER:{usr}.WaitForExit;如果我在花括号内调用变量,并且如果filePath和usr都包含至少一个反斜杠,我将如何编写此代码以应用正确数量的反斜杠?System.Diagnostics.Process.Startnet.exe,$use X:\{filePath}{pwd}/USER:{usr}.WaitForExit;注意:当我手动填充文本以代替变量时,此命令有效,因此我认为它必须与C如何转换这些变量字符串有关。System.Diagnostics.Process.Startnet.exe,$use X:\\\\ServerName\\share{pwd}/USER:domain\username.WaitForExit;@dguth8当您使用两个反斜杠时,如我的示例$C:\\{文件夹},您告诉C的是转义\并将其用作字符串序列的一部分,如果不将转义字符用作反斜杠,则将导致编译错误:只能通过在插值字符串中加倍…来转义字符。我的观点是,您需要构造包含这些转义的序列路径d个字符以获得最终结果Hanks,让我想起了一点角度。组合字符串文字时,$符号总是排在第二位,即@符号之后,还是无关紧要?谢谢,让我想起了一点角度。组合字符串文字时,$符号总是排在第二位,即@符号之后,还是无关紧要?