Какое имя объекта PowerShell для строки? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть простой метод REGEX для получения последних букв c символов строки путем удаления букв и цифр, которые предшествуют ей:

"TEST02TEST" | %{($_ -Replace '\D*\d*(\w*)', '$1')}

вывод для этого очевидно, ТЕСТ

Что если я хочу выбрать его в конце конвейера? Как я это называю, каково это имя объекта?

По сути, я пытаюсь использовать add-member, чтобы получить как уточненную строку, так и исходную строку, например:

"TEST02TEST" | %{($_ -Replace '\D*\d*(\w*)', '$1') | Add-Member -MemberType NoteProperty -Name OriginalString -Value $_ -PassThru} | select OriginalString, (something here)

Что такое «что-то здесь»?

1 Ответ

3 голосов
/ 18 апреля 2020

Предположим, у вас есть ряд строк, с которыми вам нужно разобраться, например:

$strings = "TEST02TEST", "Blah123Something", "xyz0897654ABC"

, вы можете сделать это:

foreach ($str in $strings) {
    $str | Select-Object @{Name = 'OriginalString'; Expression = {$_}},
                         @{Name = 'LastWordChars';  Expression = {$_ -replace '\D*\d*(\w+)', '$1'}}
}

Вывод:

OriginalString   LastWordChars
--------------   -------------
TEST02TEST       TEST
Blah123Something Something
xyz0897654ABC    ABC

Вместо @{Name = 'LastWordChars'; Expression = {$_ -replace '\D*\d*(\w+)', '$1'}} вы также можете использовать оператор регулярного выражения -split:

@{Name = 'LastWordChars';  Expression = {($_ -split '\d+')[-1]}}

Конечно, имя свойства LastWordChars полностью зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...