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页面上的更多内容.
你很亲密 您可以使用如下replace方法剥离空白:
$answer.replace(' ','')
在replace方法中的第二组引号之间不需要空格或字符(用空格替换空格).
您还有System.String类的Trim、TrimEnd和TrimStart方法。修剪方法将从字符串的前导和尾随部分去除空格(带有一些 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 的工作方式相同,只是修剪字符串的开头或结尾。
您可以使用:
$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)