我已经尝试了一些方法,但由于某种原因它们似乎不起作用。
基本上我想做的是让用户使用 “Read-host”cmdlet,然后去掉其中的所有空格。
我尝试过:
$answer = read-host
$answer.replace(' ' , '""')
还有:
$answer = read-host
$answer -replace (' ')
我可能错过了一些非常明显的东西,但如果有人可以帮助我或向我展示一种更简单的方法来实现这一目标,我将不胜感激。
我打算将变量通过管道传输到命令并以这种方式剥离它,但我见过的所有示例都不起作用,尽管它们看起来更容易。
最佳答案
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'
。带有数字的美元符号(例如$1
) 必须小心使用在正确的部分
'2033' -replace '(\d+)',$( 'Data: $1')
Data: 2033
更新:您还可以使用 $str = $str.Trim()
以及 TrimEnd()
和 TrimStart()
。欲了解更多信息,请访问 System.String MSDN 页面。
关于string - 使用 PowerShell 4.0 从变量输入中删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24355760/