我试图理解一些东西。我正在尝试连接这样的字符串:
$Uri = "https://stackoverflow.com/posts/67158107"
$extras = "something"
"Download $Uri?extra=$extras"
但结果我得到:?extra=something
如果我用 $Uri
或 $()
包裹 ${}
我可以让它工作,但我的问题是为什么我需要包裹它任何用 ()
包裹它有什么区别和{}
?
答案 0 :(得分:2)
我个人总是像这样使用 format 运算符:
"Download {0}?extra={1}" -f $Uri, $extras
带函数:
function BuildURL($Uri, $extras)
{
"{0}?extra={1}" -f $Uri, $extras
}
$Result=BuildURL -Uri 'https://stackoverflow.com/posts/67158107' -extras 'something'
$Result
答案 1 :(得分:1)
Powershell 允许用户在变量名中使用特殊字符。例如,
$URI?extra
在您的情况下是在 powershell 中允许的单个变量。变量中甚至允许有空格。例如,${This is my variable name}
是有效的 Powershell 变量名称。
${}
和 $()
的区别在于 {}
用于带有特殊字符的变量,而 ()
用于调用某些命令。例如,如果我的剪贴板有这样的东西:
https://stackoverflow.com/questions/67158107/string-concatenation-with-special-characters
那么你应该使用 "Download $(Get-Clipboard)"
来得到类似的东西
Download https://stackoverflow.com/questions/67158107/string-concatenation-with-special-characters