在PowerShell中没有空格的情况下连接变量和字符串文字

时间:2011-02-28 15:43:37

标签: string powershell

如何在没有空格的情况下将变量写入控制台?我尝试时有问题:

$MyVariable = "Some text"
Write-Host "$MyVariableNOSPACES"

我想要以下输出:

Some textNOSPACES

7 个答案:

答案 0 :(得分:57)

另一种选择,可能更规范的方法是使用花括号来描绘名称:

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

这对于路径来说特别方便,例如${ProjectDir}Bin\$Config\Images。但是,如果变量名后面有\,那么PowerShell就可以认为不是变量名的一部分。

答案 1 :(得分:20)

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

例如,Write-Host "$($MyVariable)NOSPACES"

答案 2 :(得分:10)

Write-Host $MyVariable"NOSPACES"

会工作,虽然看起来很奇怪......我会选择:

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

但那只是我......

答案 3 :(得分:3)

您还可以使用后面的勾选`,如下所示:

Write-Host "$MyVariable`NOSPACES"

答案 4 :(得分:1)

最简单的解决方案:Write-Host $ MyVariable“NOSPACES”

答案 5 :(得分:0)

如果速度很重要...

$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

答案 6 :(得分:0)

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

$ Variable2 ='图片'

写输出($ Variable1 + $ Variable2)