0

我可以使用 PowerShell 以非常 C# 的方式替换字符串中的子字符串:

$s.replace("foo", "bar")

这很好用并且不使用正则表达式,因此很容易掌握。

但是,这也有效(这确实使用正则表达式)

$s -replace "foo", "bar"

对我来说,这里的奥秘在于语法。字符串对象是否神奇地监听“-replace”命令行参数?这是从哪里来的?这是什么黑魔法?

我想更深入地了解 PowerShell 方式,或许还想弄清楚这种巫术是否更多地适用于其他对象或字符串对象本身。

4

2 回答 2

2

-replace是一个 Powershell 运算符。在此处了解有关 Powershell 运算符的更多信息 - http://technet.microsoft.com/en-us/library/hh847732.aspx

它几乎与字符串对象做某事无关,但与 Powershell 作为脚本语言有关。虽然它利用 .NET 对象以及它们的属性和方法(这就是 String.Replace 出现的地方),但 Powershell 也有它自己的语法,它提供给表。

于 2013-09-09T09:49:39.063 回答
0

这是什么黑魔法?

PowerShell 解释器理解a -replace b,c运算符并知道调用Regex.Replace(a, b, c)(使用正确的大小写匹配选项)。

于 2013-09-09T09:27:21.873 回答