Разделить строку с переменными пробельными символами в Poweshell

Я хотел бы разделить строку witch с переменными пробелами charachters, но получить много пустых строк, которые я бы хотел устранить. этот код

$text = "Video  Video  Audio  Audio  VBI    VBI"
$text.Split()

выводит этот

Video

Video

Audio

Audio

VBI



VBI

PS H:\>

и я бы хотел этого

Video
Video
Audio  
Audio
VBI
VBI

Ответ 1

Вы можете использовать оператор PowerShell -split, который использует регулярные выражения.

"Video  Video  Audio  Audio  VBI    VBI" -split '\s+'

Как отмечено @StijnDeVos, это не удаляет ведущие/конечные пробелы.

Здесь \s представляет пробельные символы, а + соответствует одному или нескольким из них. Тем более, что вам нужно ответить с ответом @user3554001.

Другая опция - это фильтрация пустых строк.

 "Video  Video  Audio  Audio  VBI    VBI".split()| where {$_}

Ответ 2

вы можете использовать этот фрагмент для устранения пустых строк:

$text.split(" ",[System.StringSplitOptions]::RemoveEmptyEntries)

Ответ 3

-split "Video Video Audio Audio VBI VBI"

Ответ 4

Попробуйте это, он заменяет более одного экземпляра пробела одним экземпляром перед выполнением команды split:

$($text -replace '\s+', ' ').split()

Ответ 5

Оператор -split принимает аргумент regex, поэтому просто сопоставляем несколько пробельных символов (\ s +):

$Text = $text = "Video  Video  Audio  Audio  VBI    VBI"
$text -split '\s+' -match '\S'

Video
Video
Audio
Audio
VBI
VBI

Любые конечные пробелы после последнего могут покинуть вас, будет иметь нулевую запись, поэтому -match устранит все, что является только пробелом.

Ответ 6

другое решение:

$text -split ' ' | where {$_.Trim() -ne ''}

или:

$text.Split(' ').Where({$_.Trim() -ne ''})