String 在PowerShell中连接变量和字符串文字(不带空格)

String 在PowerShell中连接变量和字符串文字(不带空格),string,powershell,String,Powershell,如何在控制台后面没有空格的情况下将变量写入控制台?我尝试时遇到了一些问题: $MyVariable = "Some text" Write-Host "$MyVariableNOSPACES" 我想要以下输出: Some textNOSPACES 您需要将变量包装为$() 例如,Write Host“$($MyVariable)NOSPACES” 会有用的,尽管看起来很奇怪。。。我会选择: Write-Host ("{0}NOSPACES" -f $MyVariable) 但那只是我…另一

如何在控制台后面没有空格的情况下将变量写入控制台?我尝试时遇到了一些问题:

$MyVariable = "Some text"
Write-Host "$MyVariableNOSPACES"
我想要以下输出:

Some textNOSPACES

您需要将变量包装为$()

例如,
Write Host“$($MyVariable)NOSPACES”

会有用的,尽管看起来很奇怪。。。我会选择:

Write-Host ("{0}NOSPACES" -f $MyVariable)

但那只是我…

另一个选择,可能更规范的方法是使用大括号来描述名称:

$MyVariable = "Some text"
Write-Host "${MyVariable}NOSPACES"

这对于路径特别方便,例如
${ProjectDir}Bin\$Config\Images
。但是,如果变量名后面有“<代码> \/COD>”,这就足以让PuthSek考虑变量名称的一部分。

< P>最简单的解决方案:<代码>写主机$MyValueNSPACES < /COD> < /P> < P>也可以使用后面的嘀嗒<代码> <代码>如下:

Write-Host "$MyVariable`NOSPACES"
如果速度很重要

$MyVariable = "Some text"

# slow:
(measure-command {foreach ($i in 1..1MB) {
    $x = "$($MyVariable)NOSPACE"
}}).TotalMilliseconds

# faster:
(measure-command {foreach ($i in 1..1MB) {
    $x = "$MyVariable`NOSPACE"
}}).TotalMilliseconds

# even faster:
(measure-command {foreach ($i in 1..1MB) {
    $x = [string]::Concat($MyVariable, "NOSPACE")
}}).TotalMilliseconds

# fastest:
(measure-command {foreach ($i in 1..1MB) {
    $x = $MyVariable + "NOSPACE"
}}).TotalMilliseconds

$Variable1='www.google.co.in/'

$Variable2='Images'


写入输出($Variable1+$Variable2)

在我的测试中,这在变量和字符串文本之间放置了一个空格。这就是我看到的:
$MyVariable=“Some text”
写入主机“$($MyVariable)NOSPACES”Some textnospaces有什么问题?检查一下。变量文本和字符串文本之间没有空格。最终,我发现我是通过不正确的语法插入空格的,但首先我跳到了Keith的答案上,结果没有成功。如果$MyVariable包含一个字符串,它就可以工作,但如果它包含一个具有存储该字符串的属性的对象,它就不能工作${ObjectVariable.SomeProperty}解析为nothing此答案也适用于对象属性。我总是更喜欢第二个选项。我也认为只有我:-)它可以工作,但PowerShell不允许在变量和字符串文字之间插入多个空格。为什么不将空格移到字符串文字<代码>写入主机$MyVariable“NOSPACES”?
$MyVariable=“x”
$MyVariable“NOSPACES”->x NOSPACES
($MyVariable“NOSPACES”)`是的,对于Powershell cough“enables”的所有un/boxing快捷方式,您可能会认为,除非您有一个名为
$MyVariableN
(或另一个冲突)的变量,否则PS会明白您的意思。无骰子。此变体的优点是它也可以在从脚本执行的命令中工作(不同于
${MyVariable}
$($MyVariable)
),此变体还有一个缺点,即如果反勾后面的字符与a匹配,它将插入该特殊字符(请尝试
“$MyVariable`nospaces”
,例如)。更进一步,这是另一种连接两个无空格变量的简单方法。如上面示例所示,将这两个变量放在一起,输出将是“www.google.co.in/images”,我如何编写这个:
write Host“\\”$pc[$I]
?在一个没有空格的变量之前我需要2个反斜杠。此解决方案在第二个反斜杠和var值之间有一个空格。空格应该有一个类似于
-nonewillne
的参数。
$MyVariable = "Some text"

# slow:
(measure-command {foreach ($i in 1..1MB) {
    $x = "$($MyVariable)NOSPACE"
}}).TotalMilliseconds

# faster:
(measure-command {foreach ($i in 1..1MB) {
    $x = "$MyVariable`NOSPACE"
}}).TotalMilliseconds

# even faster:
(measure-command {foreach ($i in 1..1MB) {
    $x = [string]::Concat($MyVariable, "NOSPACE")
}}).TotalMilliseconds

# fastest:
(measure-command {foreach ($i in 1..1MB) {
    $x = $MyVariable + "NOSPACE"
}}).TotalMilliseconds