Разделить строку с переменными пробельными символами в 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 ''})