我尝试更努力地即时转换大小写,但似乎Powershell方法无法针对以下示例的反向引用运行:
$a="string"
[regex]::replace( "$a",'(.)(.)',"$('$1'.toupper())$('$2'.tolower())" )
> string
$a -replace '(.)(.)',"$('${1}'.toupper())$('${2}'.tolower())"
> string
expected result
> StRiNg
不知道有没有可能
您需要一个脚本块来调用String类方法。您可以有效地做自己想做的事。对于Windows PowerShell,不能使用-replace
运算符替换脚本块。不过,您可以在PowerShell Core(v6 +)中执行此操作:
# Windows PowerShell
$a="string"
[regex]::Replace($a,'(.)(.)',{$args[0].Groups[1].Value.ToUpper()+$args[0].Groups[2].Value.ToLower()})
# PowerShell Core
$a="string"
$a -replace '(.)(.)',{$_.Groups[1].Value.ToUpper()+$_.Groups[2].Value.ToLower()}
请注意,脚本块替换可识别当前MatchInfo
对象($_
)。使用该Replace()
方法,除非您指定一个块,否则脚本块将MatchInfo
作为对象传递给自动变量中的参数。$args
param()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句