使用PowerShell 4.0从变量输入中删除空格

clo*_*yn3 22 variables powershell spaces stripping

我已经尝试了一些东西,但它们似乎不是出于某种原因而起作用.

基本上我正在尝试做的是让用户使用"Read-host"cmdlet输入一个值,然后将其删除任何空格.

我试过了:

$answer = read-host
$answer.replace(' ' , '""')
Run Code Online (Sandbox Code Playgroud)

和:

$answer = read-host
$answer -replace (' ')
Run Code Online (Sandbox Code Playgroud)

我可能错过了一些非常明显的东西,但如果有人能帮助我或向我展示一种更容易实现这一目标的方法,我将不胜感激.

我打算将变量传递给命令并以这种方式剥离它,但我见过的所有例子都没有,尽管它们看起来更容易.

fil*_*nic 45

Replace运营商表示换上别的东西 ; 不要与删除功能混淆.

您还应将运算符处理的结果发送给变量或其他运算符.既不修改.Replace()也不-replace修改原始变量.

要删除所有空格,请使用" 用空字符串替换任何空格符号 "

$string = $string -replace '\s',''
Run Code Online (Sandbox Code Playgroud)

要删除行的开头和结尾处的所有空格,并将所有双倍和多个空格或制表符符号替换为空格键符号,请使用

$string = $string -replace '(^\s+|\s+$)','' -replace '\s+',' '
Run Code Online (Sandbox Code Playgroud)

或更本土的System.String方法

$string = $string.Trim()
Run Code Online (Sandbox Code Playgroud)

Regexp是首选,因为' '仅表示"空格键"符号,'\s'表示"空格键,制表符和其他空格符号".请注意,$string.Replace()"正常"替换,并且$string -replaceRegEx替换,这更重,但功能更强.

请注意,RegEx有一些特殊符号,如dot(.),大括号([]()),斜杠(\),帽子(^),数学符号(+-)或美元符号($),需要进行转义.('my.space.com' -replace '\.','-'=> 'my-space-com'.$1必须谨慎使用带有数字(ex )的美元符号

'2033' -replace '(\d+)',$( 'Data: $1')
Data: 2033
Run Code Online (Sandbox Code Playgroud)

更新:您还可以使用$str = $str.Trim(),随着TrimEnd()TrimStart().阅读System.String MSDN页面上的更多内容.


Koh*_*brr 7

你很亲密 您可以使用如下replace方法剥离空白:

$answer.replace(' ','')

在replace方法中的第二组引号之间不需要空格或字符(用空格替换空格).


Ste*_*enP 6

您还有System.String类的TrimTrimEndTrimStart方法。修剪方法将从字符串的前导和尾随部分去除空格(带有一些 Unicode 怪癖),同时允许您选择指定要删除的字符。

#Note there are spaces at the beginning and end
Write-Host " ! This is a test string !%^ "
 ! This is a test string !%^
#Strips standard whitespace
Write-Host " ! This is a test string !%^ ".Trim()
! This is a test string !%^
#Strips the characters I specified
Write-Host " ! This is a test string !%^ ".Trim('!',' ')
This is a test string !%^
#Now removing ^ as well
Write-Host " ! This is a test string !%^ ".Trim('!',' ','^')
This is a test string !%
Write-Host " ! This is a test string !%^ ".Trim('!',' ','^','%')
This is a test string
#Powershell even casts strings to character arrays for you
Write-Host " ! This is a test string !%^ ".Trim('! ^%')
This is a test string
Run Code Online (Sandbox Code Playgroud)

TrimStart 和 TrimEnd 的工作方式相同,只是修剪字符串的开头或结尾。


Lee*_*Lee 5

您可以使用:

$answer.replace(' ' , '')
Run Code Online (Sandbox Code Playgroud)

或者

$answer -replace " ", ""
Run Code Online (Sandbox Code Playgroud)

如果你想删除所有空格,你可以使用:

$answer -replace "\s", ""
Run Code Online (Sandbox Code Playgroud)