PowerShell控制台主机不一致地显示字符串

时间:2014-08-06 21:04:42

标签: powershell

当我在PowerShell ISE中运行它时,两个字符串都以相同的方式显示。 当我在控制台主机中运行它时,字符串$ a缺少空行。 为什么会这样,我可以解决它吗? 我想在不使用`n

的情况下格式化文本块
$a = "there should be one emtpy line

between these two lines of text"

$b = "there should be one emtpy line`n`nbetween these two lines of text"

$a
$b

1 个答案:

答案 0 :(得分:2)

如果您在控制台主机中输入该内容,则表示您更正;它不会像预期的那样工作。但如果将其保存在文件中,则它会按预期工作(保留空行)。

我认为这是因为控制台主机使用空行来解释输入的方式,因为在某些情况下它需要检测空行以告知何时停止输入。

我不太了解它是否是一个错误。

其他可能不太清楚的是,当您按照自己的方式分配给$a时,您实际上是在插入CR和LF("`r`n& #34;)当在ISE主机中时,而对于$ b,你只是使用LF。在控制台主机中,仅使用LF。

要看到这一点,我想使用[RegEx]::Escape

[RegEx]::Escape($a)
[RegEx]::Escape($b)

使用这个我能够确认使用控制台主机输入字符串,第二个LF实际上不存在于$a字符串中;它不仅仅是一个显示问题。