我想知道 PowerShell 究竟如何处理 CSV 标头中的(未加引号的)空格...
考虑这个简单的例子:
ConvertFrom-Csv @"
Foo;
Bar
"@ -Delim ";" | select "Foo"
奇迹般有效。现在,当我在标题中添加一个空格时,它将被保留:
ConvertFrom-Csv @"
Foo ;
Bar
"@ -Delim ";" | select "Foo "
很公平。但是当我添加更多空格时,属性名称的末尾仍然只有一个空格:
ConvertFrom-Csv @"
Foo ;
Bar
"@ -Delim ";" | select "Foo "
我在想,也许 PowerShell 用一个空格替换多个连续的空格,以清理由多个单词组成的标题,但没有:
ConvertFrom-Csv @"
Foo Bar;
Hello
"@ -Delim ";" | select "Foo Bar"
更奇怪的是:现在,最后似乎保留了任意数量的空格,奇怪的“单个空格”行为消失了:
ConvertFrom-Csv @"
Foo Bar ;
Hello
"@ -Delim ";" | select "Foo Bar "
另外,请注意,任何前导空格显然总是被修剪。但到目前为止,我还没有做更多的测试。
谁能解释这种行为?
我找不到任何文档。如果所有的空白要么总是被保留,要么总是被修剪,这将是有意义的。但是这种行为非常令人困惑。Import-Csv
顺便说一句,似乎有相同的行为。
(版本:PowerShell 5.1)
编辑
请注意,我不拥有CSV。它是由客户提供的。我知道可以引用标题,但这是关于现有 CSV的处理,而不是如何修改它。我知道如何解决这个问题,但这不是问题的目的。
理想情况下,我希望 PowerShell不会保留任何尾随空格,所以我想知道它为什么会保留,因为这使它更难使用。