Где вроде "*" в PowerShell - PullRequest
       3

Где вроде "*" в PowerShell

0 голосов
/ 22 февраля 2019

У меня есть список строк, и некоторые из них начинаются с "*", например: "* ThisIsAString", "* Это также строка".

Я хотел бы использовать предложение whereвыбрать только те строки, которые начинаются с "*", но, поскольку * символ, используемый для указания продолжения до конца строки, - мне трудно.

Это то, что я пытаюсь сделатьвроде: Where-Object {$_.DisplayName -like "* "}

Я уверен, что это возможно, но я не нашел способа сделать это после некоторых копаний в Интернете!

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Еще один способ сделать это - регулярное выражение -match:

PS> $strings='* one','two','* three'
PS> $strings.Where({$_ -match  '^\* '})
* one
* three
0 голосов
/ 22 февраля 2019

Ваш собственный ответ, основанный на полезных комментариях Ансгара Вихера и Полезная альтернатива Герта Яна Краайевельда оба предоставляют эффективные решения.

Самое непосредственное решение - escape the * char.в подстановочном выражении, что можно сделать с помощью обратного ключа (`), но имейте в виду, что оно должно быть помещено в строку в одинарных кавычках ('...'):

PS> '* foo' -like '`* *'  
True
0 голосов
/ 22 февраля 2019
$_.DisplayName -like '[*] *'

или

$_.DisplayName.StartsWith('* ')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...