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

时间:2014-06-22 21:09:17

标签: variables powershell spaces stripping

我已经尝试了一些事情,但他们似乎不会出于某种原因而工作。

基本上我尝试做的是让用户输入一个值 "读取主机" cmdlet,然后删除任何空格。

我试过了:

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

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

我可能遗漏了一些非常明显的东西,但是如果有人能帮助我或让我更容易实现这一目标,我将不胜感激。

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

5 个答案:

答案 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课程的TrimEndTrimStartSystem.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)替换空格,换句话说,只删除空格。