Могу ли я получить "медведь", используя одну строку , используя трубопровод ?
С строками, уже сохраненными в памяти, есть нет веских оснований для использования конвейера - это только замедлит работу.
Вместо этого использует операторы PowerShell , которые на быстрее, чем использование конвейера и, как правило, более гибкие, чем методы с аналогичным названием .NET [string]
, потому что они работают с регулярными выражениями (регулярные выражения), а также могут работать с целыми массивами :
PS> ('dog.puppy/cat.kitten/bear.cub' -split '[/.]')[-2]
bear
То есть разделить входную строку наили литерал /
или литерал .
(с использованием набора символов, [...]
) и возврат предпоследнего (от второго к последнему) ([-2]
) токена.
См. этот ответ , почему вы обычно предпочитаете -split
оператор , например, String.Split()
метод .
Такой жеприменяется аналогично предпочтению оператора -replace
методу String.Replace()
.
Легко цепочка эти операторы :
PS> ('dog.puppy/cat.kitten/bearOneTwoThree.cub' -split '[/.]')[-2] -csplit '(?=\p{Lu})'
bear
One
Two
Three
То есть возвращают предпоследний токен и разбивают его регистр - чувствительно (используя вариант -csplit
оператора -split
) всякий раз, когданачинается заглавная буква (\p{Lu}
) с использованием положительного прогнозного утверждения , (?=...
).