#powershell
Вопрос:
$my_courses = @("course1 # Learning Task Automations # New", "course2 # Advanced Scripting amp; tool making # New2", "course3 # AD Management using PowerShell /In progress # New3")
$my_courses.Contains("Task")
Ответ №1:
Ваш $my_courses
массив состоит из строк, поэтому вам не следует использовать метод string .Contains
для него в целом. Вы можете использовать это для каждого элемента массива отдельно, но затем помните .Contains
, что работает с учетом регистра, что, вероятно, не то, что вы хотите:
Если вы хотите проверить, содержит ли один из этих курсов подстроку «задача», и просто вернуть » или $true
«или $false
«, я предлагаю одно из следующих действий:
$my_courses = "course1 # Learning Task Automations # New",
"course2 # Advanced Scripting amp; tool making # New2",
"course3 # AD Management using PowerShell /In progress # New3"
- используйте
-like
с подстановочными знаками и приведите результат к логическому значению. Если ни один элемент не содержит «задачу», результат будет $false
[bool]($my_courses -like "*task*")
- используйте
-match
и приведите результат к логическому
[bool]($my_courses -match "task")
Если вы хотите, чтобы задание word было целым словом, заключите его b
метасимволами границ слов.
Это предотвратит получение True для таких слов, как «Целевая группа».
[bool]($my_courses -match "btaskb")
- используйте
Where-Object
предложение для фильтрации массива элементов, содержащих «задачу», а затем снова приведите его к логическому
[bool]($my_courses | Where-Object { $_ -match 'task' })
- использовать
[regex]::IsMatch()
# (?i) makes it case-insensitive and the b around it make it a whole word search
[regex]::IsMatch($my_courses, '(?i)btaskb')
Ответ №2:
.contains
Метод ищет точное совпадение, например
$my_courses.contains("course1 # Learning Task Automations # New")
Метод не поддерживает подстановочные знаки — попробуйте использовать -like
$my_courses -like "*Task*"