当我在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
答案 0 :(得分:2)
如果您在控制台主机中输入该内容,则表示您更正;它不会像预期的那样工作。但如果将其保存在文件中,则它会按预期工作(保留空行)。
我认为这是因为控制台主机使用空行来解释输入的方式,因为在某些情况下它需要检测空行以告知何时停止输入。
我不太了解它是否是一个错误。
其他可能不太清楚的是,当您按照自己的方式分配给$a
时,您实际上是在插入CR和LF("`r`n& #34;)当在ISE主机中时,而对于$ b,你只是使用LF。在控制台主机中,仅使用LF。
要看到这一点,我想使用[RegEx]::Escape
:
[RegEx]::Escape($a)
[RegEx]::Escape($b)
使用这个我能够确认使用控制台主机输入字符串,第二个LF实际上不存在于$a
字符串中;它不仅仅是一个显示问题。