我已经尝试了一些事情,但他们似乎不会出于某种原因而工作。
基本上我尝试做的是让用户输入一个值 "读取主机" cmdlet,然后删除任何空格。
我试过了:
$answer = read-host
$answer.replace(' ' , '""')
和
$answer = read-host
$answer -replace (' ')
我可能遗漏了一些非常明显的东西,但是如果有人能帮助我或让我更容易实现这一目标,我将不胜感激。
我打算将变量传递给命令并以这种方式剥离它,但我见过的所有例子都没有用,尽管它们看起来更容易。
答案 0 :(得分:40)
Replace
运算符表示用其他东西替换;不要与删除功能混淆。
此外,您应该将操作员处理的结果发送给变量或其他操作员。 .Replace()
和-replace
都不会修改原始变量。
要删除所有空格,请使用'将任何空格符号替换为空字符串'
$string = $string -replace '\s',''
要删除行开头和结尾的所有空格,并将所有双倍空格或制表符符号替换为空格键符号,请使用
$string = $string -replace '(^\s+|\s+$)','' -replace '\s+',' '
或更原生的System.String
方法
$string = $string.Trim()
首选正则表达式,因为' '
仅表示“空格键”符号,'\s'
表示“空格键,制表符和其他空格符号”。请注意,$string.Replace()
执行'正常'替换,$string -replace
执行RegEx替换,这更重,但功能更强。
请注意,RegEx有一些特殊符号,如点(.
),大括号([]()
),斜杠(\
),帽子(^
),数学符号( +-
)或美元符号($
)需要进行转义。 ('my.space.com' -replace '\.','-'
=> 'my-space-com'
。必须小心使用带有数字(ex $1
)的美元符号
'2033' -replace '(\d+)',$( 'Data: $1')
Data: 2033
更新:您还可以使用$str = $str.Trim()
,以及TrimEnd()
和TrimStart()
。在System.String MSDN页面阅读更多内容。
答案 1 :(得分:7)
你很亲密。您可以使用replace
方法删除空格,如下所示:
$answer.replace(' ','')
在replace方法的第二组引号之间不需要空格或字符(用空格替换空格)。
答案 2 :(得分:4)
您还拥有Trim课程的TrimEnd,TrimStart和System.String方法。 trim方法将从字符串的前导和尾部删除空格(带有几个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
TrimStart和TrimEnd的工作方式相同,只是修剪字符串的开头或结尾。
答案 3 :(得分:1)
您可以使用:
$answer.replace(' ' , '')
或
$answer -replace " ", ""
如果你想删除所有可以使用的空格:
$answer -replace "\s", ""
答案 4 :(得分:0)
如果字符串是
$STR = 'HELLO WORLD'
并且您要删除'HELLO'和'WORLD'
之间的空白区域$STR.replace(' ','')
replace
获取字符串并用空字符串(长度为0)替换空格,换句话说,只删除空格。