Powershell: как убрать первую пустую пустую строку в консольном выводе массива? - PullRequest
0 голосов
/ 10 марта 2019

У меня есть код ( tio.run ), который выводится на консоль:

$exeoutput = @(
    "     Compression          : CCITT Group 4",
    "     Width                : 3180",
    "     Height               : 4908"
)
$var = $exeoutput.trim() | Select-String "Height|Width|Compress"
echo ----------------
$var
echo ---------------

Вывод

----------------

Compression          : CCITT Group 4
Width                : 3180
Height               : 4908
----------------

Как удалить первый пустой пробелстрока после верхнего ---------------- из консольного вывода?

1 Ответ

1 голос
/ 10 марта 2019

Каждый элемент переменной $var имеет тип MatchInfo.Вам необходимо привести их к string следующим образом:

[string[]]$var

или

$var.foreach([string])

Чтение Методы ForEach и Where :

ForEach (тип convertToType)

Уникальный для метода ForEach, вы можете передать тип в метод ForEach, если хотите преобразовать каждый элемент в коллекции в другой тип.Например, представьте, что у вас есть коллекция объектов, и вы хотите преобразовать эти объекты в их строковый эквивалент.Вот как это выглядело бы с методом ForEach:

# Get a collection of processes
$processes = Get-Process
# Convert the objects in that collection into their string equivalent
$processes.foreach([string])

Вы могли бы выполнить ту же задачу, вставив коллекцию в массив типа string (например, [string[]]$processes) и вставивМассив на самом деле значительно быстрее, однако есть очень хороший шанс, что вы даже не заметите разницу во времени выполнения, если не будете работать с очень, очень большой коллекцией.Несмотря на разницу во времени, я буду склонен предпочитать синтаксис метода ForEach в определенных ситуациях, если он позволяет мне поддерживать элегантность в реализации, избегая лишних круглых скобок в сценариях, которые я пишу.

Пример фрагмент кода (обновлен с учетом комментария Lee_Dailey ):

$var = $exeoutput.trim() | Select-String "Height|Width|Compress"
'-' * 15
$var.foreach([string])
'-' * 15

Результат:

---------------
Compression          : CCITT Group 4
Width                : 3180
Height               : 4908
---------------

Обратите внимание, что echo является псевдонимомдля Write-Output командлет :

Этот командлет обычно используется в сценариях для отображения строк и других объектов на консоли.Однако из-за поведения по умолчанию для отображения объектов в конце конвейера обычно нет необходимости использовать командлет .

Обратите внимание, что можноумножить числа, строки и массивы (см. -'- '* 15˙ вместо ----------------).

...