string - 字符串的 PowerShell 对象名称是什么?
问题描述
我有一个简单的 REGEX 方法,通过删除前面的字母和数字来获取字符串的最后一个字母字符:
"TEST02TEST" | %{($_ -Replace '\D*\d*(\w*)', '$1')}
这个的输出显然是 TEST
如果我想在管道末端选择它怎么办?我怎么称呼它,它的对象名称是什么?
基本上我正在尝试使用 add-member 获取精炼字符串和原始字符串,如下所示:
"TEST02TEST" | %{($_ -Replace '\D*\d*(\w*)', '$1') | Add-Member -MemberType NoteProperty -Name OriginalString -Value $_ -PassThru} | select OriginalString, (something here)
什么是“这里的东西”?
解决方案
假设您有一系列需要处理的字符串,例如:
$strings = "TEST02TEST", "Blah123Something", "xyz0897654ABC"
你可以这样做:
foreach ($str in $strings) {
$str | Select-Object @{Name = 'OriginalString'; Expression = {$_}},
@{Name = 'LastWordChars'; Expression = {$_ -replace '\D*\d*(\w+)', '$1'}}
}
输出:
OriginalString LastWordChars -------------- ------------- TEST02测试测试 Blah123某事某事 xyz0897654ABC ABC
@{Name = 'LastWordChars'; Expression = {$_ -replace '\D*\d*(\w+)', '$1'}}
您也可以使用 regex运算符代替-split
:
@{Name = 'LastWordChars'; Expression = {($_ -split '\d+')[-1]}}
当然,属性名称“LastWordChars”完全取决于您。