Предположим, что у вас есть строка текста
[code language=»powershell»]
$text="PowerShell очень важный инструмент в жизни любого администратора Windows, но наиболее важен он`
для администраторов почтовых систем на базе Microsoft Exchange Server 2010"
[/code]
Необходимо подсчитать сколько слов начинается на «админи*»
Для этого проще всего разбить строку на слова и загнать их в массив
[code language=»powershell»]
$words = $text -split ‘ ‘
PS C:\: $words
PowerShell
очень
важный
инструмент
в
жизни
любого
администратора
Windows,
но
наиболее
важен
он
для
администраторов
почтовых
систем
на
базе
Microsoft
Exchange
Server
2010
[/code]
Теперь выберем слова начинающиеся на «админи*»
[code language=»powershell»]
$words -like "админи*"
PS С:\: $words -like "админи*"
администратора
администраторов
[/code]
Количество слов можно подсчитать следующим образом:
[code language=»powershell»]
PS С:\> $words -like "админи*" | measure
Count : 2
Average :
Sum :
Maximum :
Minimum :
Property :
[/code]
Итак мы видим, что можно не использовать регулярные выражения для работы со строками.
UPDATE: Олег Крылов предложил использовать следующий вариант:
[code language=»powershell»]
($words -like "админи*").count
[/code]
Паша, а не проще будет вместо | measure, использовать метод count? Тогда последняя строчка будет выглядеть так:
($words -like «админи*»).count
Не?
Конечно проще, не подумал я чего-то.
Не проще. Для .Count придётся возвращать курсор в начало строки чтобы поставить там открывающую скобку.
Кстати столкнулся с этим на практике, действительно не проще именно из-за этих скобок, тупо неудобно.