在PowerShell版本5.1.15063.726中运行以下命令
@"
$(foreach ($Number in 1..4) {"$Number`r`n"})
"@
Run Code Online (Sandbox Code Playgroud)
结果是
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
在每行的新行之后似乎添加了尾随空格.
我想也许这是一个怪癖
`r`n
Run Code Online (Sandbox Code Playgroud)
但使用[Environment]::NewLine
具有相同的问题:
@"
$(foreach ($Number in 1..4) {"$Number" + [Environment]::NewLine})
"@
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
在没有迭代的情况下做一些看似平等的事情按预期工作:
@"
$("1`r`n" + "2`r`n" + "3`r`n" + "4`r`n")
"@
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
以下也有效:
@"
$("1" + [Environment]::NewLine)$("2" + [Environment]::NewLine)$("3" + [Environment]::NewLine)$("4" + [Environment]::NewLine)
"@
@"
$("1`r`n")$("2`r`n")$("3`r`n")$("4`r`n")
"@
Run Code Online (Sandbox Code Playgroud)
以下不起作用,导致新行后的奇数额外空格:
@"
$(1..4 | ForEach-Object {"$_`r`n"})
"@
@"
$(1..4 | ForEach-Object {$("$_`r`n")})
"@
Run Code Online (Sandbox Code Playgroud)
想想也许这个问题与在循环中返回多个字符串有关,我试图构建一个字符串,然后返回那个有效的循环形式:
$String = ""
@"
$( foreach ($Number in 1..4) {$String += "$Number`r`n"}; $String)
"@
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
如果我们在从子表达式返回之前聚合字符串但在循环外部进行聚合,则会返回相同的奇怪行为:
$String = ""
@"
$($String += foreach ($Number in 1..4) {"$Number`r`n"}; $String)
"@
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
有人知道是什么导致这种情况发生的吗?
归档时间: |
|
查看次数: |
114 次 |
最近记录: |