Как извлечь текст в PowerShell без регулярных выражений?

Как извлечь текст в PowerShell без регулярных выражений?

Предположим, что у вас есть строка текста


$text="PowerShell очень важный инструмент в жизни любого администратора Windows, но наиболее важен он`
 для администраторов почтовых систем на базе Microsoft Exchange Server 2010"

Необходимо подсчитать сколько слов начинается на «админи*»

Для этого проще всего разбить строку на слова и загнать их в массив


$words = $text -split '  '

PS C:\: $words
PowerShell
очень
важный
инструмент
в
жизни
любого
администратора
Windows,
но
наиболее
важен
он
для
администраторов
почтовых
систем
на
базе
Microsoft
Exchange
Server
2010

Теперь выберем слова начинающиеся на «админи*»

$words -like "админи*"

PS С:\: $words -like "админи*"
администратора
администраторов

Количество слов можно подсчитать следующим образом:

PS С:\> $words -like "админи*" | measure

Count    : 2
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

Итак мы видим, что можно не использовать регулярные выражения для работы со строками.

UPDATE: Олег Крылов предложил использовать следующий вариант:


($words -like "админи*").count

Связанные записи:


  • http://msexchangeexpert.ru Oleg Krylov

    Паша, а не проще будет вместо | measure, использовать метод count? Тогда последняя строчка будет выглядеть так:
    ($words -like «админи*»).count
    Не?

  • Pavel Nagaev

    Конечно проще, не подумал я чего-то.

  • http://xaegr.wordpress.com Вася

    Не проще. Для .Count придётся возвращать курсор в начало строки чтобы поставить там открывающую скобку.

  • Pavel Nagaev

    Кстати столкнулся с этим на практике, действительно не проще именно из-за этих скобок, тупо неудобно.