Вы можете использовать оператор regex на основе -replace
следующим образом:
PS> ' |2080| | | | | | | | | | | | | |2000225| ' -replace ' (\||$)', '$1'
|2080||||||||||||||2000225|
Этот предполагает, что нет non- пустые поля имеют завершающие пробелы - если они есть, их (последний) конечный пробел будет удален; чтобы избежать этого, используйте соответствующее решение из полезного ответа Виктора Стрибьева .
Regex (\||$)
соответствует одиночному пробелу. за которым следует либо литерал |
(экранированный как \|
), либо (|
) конец строки ($
); $1
в строке замены затем заменяет все, что соответствует первой группе захвата ((...)
); то есть, если пробел char. за ним следует буквальный |
, он фактически заменяется просто |
; если за ним следует конец строки , это эффективно удаляется .
A небольшое упрощение заключается в использовании утверждения положительного просмотра ((?=...)
), которое также используется в ответе Виктора, который захватывает только символ пробела и, следовательно, допускает пропуск текст подстановки -replace
операнд, который по умолчанию имеет значение пустая строка и, следовательно, эффективно удаляет пробелы:
PS> ' |2080| | | | | | | | | | | | | |2000225| ' -replace ' (?=\||$)'
|2080||||||||||||||2000225|