带有特殊字符的字符串连接

时间:2021-04-19 08:01:49

标签: powershell

我试图理解一些东西。我正在尝试连接这样的字符串:

$Uri = "https://stackoverflow.com/posts/67158107"
$extras = "something"
    
"Download $Uri?extra=$extras"

但结果我得到:?extra=something 如果我用 $Uri$() 包裹 ${} 我可以让它工作,但我的问题是为什么我需要包裹它任何用 () 包裹它有什么区别和{}

2 个答案:

答案 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

相关问题