如何看待PowerShell中.Replace() 和-replace


有两个可以替换文本中的字符串,一个是string类中的Replace()方法,另一个是–replace操作符。它们的工作原理本质上却不同

Replace() 是大小写敏感,把目标字符串替换新字符串:

PS> 'Hello World.'.Replace('o', '0')
 Hell0 W0rld

PS> 'Hello World.'.Replace('ell','oo')
 Hooo World

-replace 操作符默认是大小写不敏感(除非你使用-creplace才会大小写敏感),而且可以接受一个正则表达式进行匹配替换,这一点强大之处,很容易被人遗忘。

PS> 'Hello World.' -replace 'ell', 'oo'
 Hooo World.

PS> 'Hello World.' -replace '.', '!'
 !!!!!!!!!!!!

如果你不知道 -replace 能否接收正则表达式,肯定会对上面第二个例子中结果很困惑。所以如果仍旧想使用 -replace 替换静态文本,请确保先转义你的文本。

PS> 'Hello World.' -replace [Regex]::Escape('.'), '!'
Hello World!

荔非苔注:使用[Regex]多年了,竟然不知道里面还有一个Escape方法,小巧,方便,再次为.NET类库折服。

原文链接:How .Replace() and -replace differ

本文链接: https://www.pstips.net/e45ce.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注