Объявление нескольких переменных на основе списка данных - PullRequest
0 голосов
/ 17 мая 2018

У меня есть список поступающих чисел, и мне нужно объявить, что несколько переменных являются истинными, основываясь на первом символе набора элементов в списке.

Это никоим образом не реальный пример,но вот сценарий.Вот набор элементов:

A1
A2
A4
B3
B5

Мне нужен скрипт для просмотра этого списка, и если любой из первых символов начинается с A, то $A = true.И / или если он найдет что-либо, начинающееся с B, то $B = true.И если он не находит ничего, что начинается с C, тогда $C = false.

Мне нужен скрипт, чтобы проверить каждую букву, а затем в значительной степени сообщить, найдены ли какие-либо значения, начинающиеся с этой буквы.

Я знаю, что это довольно запутанный пост, поэтому, пожалуйста, ответьте, если есть какие-либо вопросы.

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Ансгар был быстрее, поэтому другой подход

$List = ("A1","A2","A4","B3","B5")

"A","B","C" | ForEach-Object {
    "Checking {0}" -f $_
    if ($List -match "^$_"){
        "$($_):True"
        Set-Variable -Name "$_" -Value $True
    } else {
        "$($_):False"
        Set-Variable -Name "$_" -Value $False
    }
}

Пример вывода:

Checking A
A:True
Checking B
B:True
Checking C
C:False
0 голосов
/ 17 мая 2018

Я дам вам другой вариант, в котором вам не нужно вручную печатать 26 дел.

ForEach($Char in (65..90|%{[char]$_})){
    Set-Variable -Name $Char -Value ([bool]($List -match "^$char"))
    "$Char found: " + (Get-Variable $Char).Value
}

Это повторяет A-Z и проверяет, совпадает ли что-нибудь в списке с первой буквой, и оценивает результат как True / False. Затем он присваивает этот результат переменной для этого символа и отображает результаты.

0 голосов
/ 17 мая 2018

Инициализируйте ваши переменные как $false:

$A = $false
$B = $false
$C = $false
...

Затем выполните итерации по списку и используйте оператор switch, чтобы установить переменные на $true, если элемент списка начинаетсяс определенным символом:

$list | ForEach-Object {
    switch -wildcard ($_) {
        'a*' { $A = $true }
        'b*' { $B = $true }
        'c*' { $C = $true }
        ...
    }
}

Или, как указал Брюс Пайетт в комментариях, просто передайте список в оператор switch напрямую:

switch -wildcard ($list) {
    'a*' { $A = $true }
    'b*' { $B = $true }
    'c*' { $C = $true }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...