PowerShell 代码:
$string = @'
Line 1
Line 3
'@
$string
输出:
Line 1
Line 3
但我希望它输出:
Line 1
Line 3
我怎样才能做到这一点?
PowerShell 代码:
$string = @'
Line 1
Line 3
'@
$string
输出:
Line 1
Line 3
但我希望它输出:
Line 1
Line 3
我怎样才能做到这一点?
在 ISE 中工作正常,并且也在script
工作中。我不记得在哪里,但我读到这是控制台主机代码中的一个错误,并且当以交互方式输入 here-string 时,空行将被丢弃。目前我无法测试 Powershell V.3.0 控制台错误是否已修复。
解决方法:添加反引号`
$string = @"
Line 1
`
Line 3
"@
另一种选择是使用:
"@+[environment]::NewLine+[environment]::NewLine+@"
它可能看起来很难看,但可以根据需要工作。上面的例子是:
$string = @"
Line 1
"@+[environment]::NewLine+[environment]::NewLine+@"
Line 3
"@
这是另一种方式,特别是如果您不想更改此处字符串本身。这个快速的解决方案对我很有用,因为它恢复了存储在 Here-String / Verbatim-String 中的换行符 (CRLF) 的预期行为,而无需更改 Here-string本身。你可以做的是:
$here_str = $here_str -split ([char]13+[char]10)
或者
$here_str = $here_str -split [Environment]::NewLine
要进行测试,您可以进行行数:
($here_str).Count
这是您的示例:
$string = @'
Line 1
Line 3
'@
#Line-Count *Before*:
$string.Count #1
$string = $string -split [Environment]::NewLine
#Line-Count *After*:
$string.Count #3
$string
输出:
Line 1
Line 3
高温高压