2011-12-31 2 views
13

Я пытался найти способ в PowerShell, чтобы удалить более одного пробела.Удаление более одного пробела в powershell

Но я нашел, как это сделать в php. "Removing more than one white-space"

Будут аналогичные регулярные выражения.

Как добиться того же в powershell?

Моя строка как этот

Xcopy Source Desination 

Некоторые линии могут содержать более одного пустого пространства между источником и пунктом назначения.

ответ

42

Если вы хотите, чтобы свернуть несколько последовательных пробельных символов в единое пространство, то вы можете сделать это с помощью -replace оператора:

'[  Hello,  World!  ]' -replace '\s+', ' ' 

... возвращается ...

[ Hello, World! ] 

Первый параметр, равный -replace, соответствует шаблону regular expression, а вторым параметром является текст, который заменит любые совпадения. \s будет соответствовать символу пробела, а + указывает на совпадение одного или нескольких вхождений, так, другими словами, один или несколько смежных символов пробелов будут заменены одним пробелом. Введите help about_comparison_operators или см. here для получения дополнительной информации.

+0

Спасибо Mr.Bacon. Он выполняет эту работу для меня. – Samselvaprabu

+0

Использование Trim(), TrimStart() и/или TrimEnd() является недвусмысленно лучшим вариантом. –

+14

Во-первых, мой ответ - это работающее альтернативное решение, поэтому я не понимаю, почему он заслуживает понижения. Во-вторых, методы Trim *() работают конкретно в начале и/или конце строки, тогда как автор приводит пример строки, где пробелы, подлежащие удалению, находятся в середине строки, которую Trim *() игнорировать. – BACON