Удаление пробелов из входных переменных с помощью 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 (замена пробела ничем) не должно быть пробелов или символов.
вы можете использовать:
$answer.replace(' ' , '')
или
$answer -replace " ", ""
Если вы хотите удалить все пробелы можно использовать:
$answer -replace "\s", ""
если строка
$STR = 'HELLO WORLD'
и вы хотите удалить пустое пространство между "привет" и "мир"
$STR.replace(' ','')
replace
берет строку и заменяет пробел пустой строкой (длиной 0), другими словами, пробел просто удаляется.