根据数据列表

时间:2018-05-16 22:08:48

标签: list powershell if-statement

我有一个数字列表,我需要根据列表中一组项目的第一个字符声明多个变量为true。

这绝不是一个实际的例子,但这是一个场景。这是一组项目:

A1
A2
A4
B3
B5

我需要脚本来查看此列表,如果任何第一个字符以A开头,那么$A = true。和/或如果它发现任何以B开头,那么$B = true。如果找不到任何以C开头,那么$C = false

我需要脚本检查每个字母,然后如果发现任何以该字母开头的值,则需要回报。

我知道这是一个令人困惑的帖子,所以如果有任何问题请回复。

3 个答案:

答案 0 :(得分:0)

将变量初始化为$false

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

然后迭代列表并使用switch语句将变量设置为$true如果列表项以特定字符开头:

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

或者,正如Bruce Payette在评论中指出的那样,只需将列表直接传递到switch语句中:

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

答案 1 :(得分:0)

Ansgar更快,所以采用不同的方法

Checking A
A:True
Checking B
B:True
Checking C
C:False

示例输出:

my_premium_shortcodes(); // Fires early in my php file

function my_premium_shortcodes(){
    $status     = get_option( 'key_status' );

    if( $status !== false && $status == 'valid' ) { 

        add_shortcode('shortcode_handle_1','shortcode_function_1');
        add_shortcode('shortcode_handle_2','shortcode_function_2');

    } else {

        remove_shortcode('shortcode_handle_1','shortcode_function_1');
        remove_shortcode('shortcode_handle_2','shortcode_function_2');
    }

}

答案 2 :(得分:0)

我会给你另一个选项,一个你不必手动输入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。然后它将该结果分配给该字符的变量,并显示结果。