为什么哈希表键上有空格?

tee*_*bot 1 powershell

我不明白为什么这个脚本中的字符串连接存在差异.我真的不明白这个空白来自哪里?你能告诉我什么是错的吗?

$table = @{
"aaa"=1
}

$x = "qqq"
$y = "rrr"

$table.GetEnumerator() | ForEach-Object { 
Write-Host $_.Key$x            #THIS PRINTS "aaa qqq"
}


Write-Host $x$y   #THIS PRINTS : "qqqrrr"
Run Code Online (Sandbox Code Playgroud)

小智 8

处理命令的参数时,如果第一个片段是可识别的表达式,则PowerShell解析器会将相邻的表达式拆分为离散参数,就像使用$()一样.因为PowerShell是基于对象的,所以我们尝试保持对象完整性,直到我们绝对必须渲染为字符串.如果你想强制字符串扩展,请在整个参数序列周围加上双引号作为其他海报的建议.请注意,带有前导字符(如$ x)的参数将被视为双引号字符串"a $ x".这是因为前导字符不被识别为有效表达式,因此我们默认将其视为可扩展字符串.

布鲁斯

微软公司Windows PowerShell团队的Bruce Payette