6

PowerShell 代码:

$string = @'
Line 1

Line 3
'@
$string

输出:

Line 1
Line 3

但我希望它输出:

Line 1

Line 3

我怎样才能做到这一点?

4

3 回答 3

6

在 ISE 中工作正常,并且也在script工作中。我不记得在哪里,但我读到这是控制台主机代码中的一个错误,并且当以交互方式输入 here-string 时,空行将被丢弃。目前我无法测试 Powershell V.3.0 控制台错误是否已修复。

问题链接:http ://connect.microsoft.com/PowerShell/feedback/details/571644/a-here-string-cannot-contain-blank-line

解决方法:添加反引号`

$string = @"
Line 1
`
Line 3
"@
于 2013-01-24T15:38:23.967 回答
0

另一种选择是使用: "@+[environment]::NewLine+[environment]::NewLine+@" 它可能看起来很难看,但可以根据需要工作。上面的例子是:

$string = @"
Line 1
"@+[environment]::NewLine+[environment]::NewLine+@"
Line 3
"@
于 2017-07-25T14:44:33.760 回答
0

这是另一种方式,特别是如果您不想更改此处字符串本身。这个快速的解决方案对我很有用,因为它恢复了存储在 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

高温高压

于 2019-04-14T19:58:03.537 回答