首页 > 解决方案 > 字符串的 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)

什么是“这里的东西”?

标签: stringpowershell

解决方案


假设您有一系列需要处理的字符串,例如:

$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”完全取决于您。


推荐阅读