Удаление пробелов из входных переменных с помощью PowerShell 4.0

Я уже пробовал несколько вещей, но они не работают почему-то.

в основном то, что я пытаюсь сделать, это ввести пользователем значение, используя Командлет" Read-host", затем очистите его от пробелов.

пробовал:

$answer = read-host
$answer.replace(' ' , '""')

и:

$answer = read-host
$answer -replace (' ')

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

Я собирался передайте переменную команде и разделите ее таким образом, но ни один из примеров, которые я видел, не работает, хотя они выглядят намного проще.

5 ответов


на Replace оператор означает Замените что-нибудь на что-нибудь другое; не путайте с функциональностью удаления.

также вы должны отправить результат, обработанный оператором переменной или другому оператору. Ни .Replace(), nor -replace изменяет исходную переменную.

удалить все пробелы, используйте 'замените любой символ пробела пустой строкой'

$string = $string -replace '\s',''

удалить все пробелы в начале и конец строки, и замените все двойные и более пробелы или символы табуляции на символ пробела, используйте

$string = $string -replace '(^\s+|\s+$)','' -replace '\s+',' '

или больше, уроженца System.String метод

$string = $string.Trim()

Regexp предпочтительнее, потому что ' ' означает только символ "пробел" и '\s' означает "пробел, вкладка и другие символы пробела". Обратите внимание, что $string.Replace() заменяет ли "нормальный" и $string -replace заменяет ли регулярное выражение, которое более тяжелое, но более функциональное.

обратите внимание, что RegEx имеют некоторые специальные символы как ДОТ (.), скобки ([]()), косые черты (\), головные уборы (^), математические знаки (+-) или знака доллара ($) что нужно сделать, чтобы избежать. ( 'my.space.com' -replace '\.','-' =>'my-space-com'. Знак доллара с номером (например,) необходимо использовать на правой части с осторожностью

'2033' -replace '(\d+)',$( 'Data: ')
Data: 2033

UPDATE: вы также можете использовать $str = $str.Trim() вместе с TrimEnd() и TrimStart(). Подробнее в


вы близки. Вы можете удалить пробелы, используя replace способ такой:

$answer.replace(' ','')

между вторым набором кавычек в методе replace (замена пробела ничем) не должно быть пробелов или символов.


у вас также есть отделка, TrimEnd и TrimStart методы


вы можете использовать:

$answer.replace(' ' , '')

или

$answer -replace " ", ""

Если вы хотите удалить все пробелы можно использовать:

$answer -replace "\s", ""

если строка

$STR = 'HELLO WORLD'

и вы хотите удалить пустое пространство между "привет" и "мир"

$STR.replace(' ','')

replace берет строку и заменяет пробел пустой строкой (длиной 0), другими словами, пробел просто удаляется.