Это связано с тем, что метод .Split()
разделится на любой из найденных символов, например:
"first part of a string-*second part of a string".Split("-*")
Вывод:
first part of a string
second part of a string
Дополнительный элемент - вставленная пустая строка между двумя разделенными символами.
(кредит @ mklement0, чтобы исправить это)
Так что я могу только предположить, что это результат нескольких факторов. Первый [Environment]::NewLine
- это оба символа CarrigeReturn и LineFeed, и строка, исходящая из Outlook, действительно использует эту последовательность окончания строки. Все, чего следует ожидать в Windows.
Есть 2 решения, о которых я могу думать:
Вариант 1:
.Split([Environment]::NewLine), [Stringsplitoptions]::RemoveEmptyEntries)
Это очевидно придерживается того же метода .Split()
, но добавленный параметр уничтожит лишний элемент.
Вариант 2:
Используйте оператор PowerShell -split
, который соответствует разделить разделитель с использованием RegEx:
"This is`r`na string." -split "`r`n"