如果你学过其他的高级语言一定对Switch不陌生,下面讲解一下基本语法。
例1:
1 $n=Get-Random 5 2 $s='小明考试得分' 3 switch($n) 4 { 5 0 {$m=30} 6 1 {$m=50} 7 2 {$m=70} 8 3 {$m=90} 9 4 {$m=100} 10 5 {$m=120} 11 } 12 $s+$m
例2:
1 $n=Get-Random 100 2 $s='小明考试得分' 3 switch($n) 4 { 5 {$_ -lt 60} {$m='不及格'} 6 {$_ -ge 60 -and $_ -lt 70} {$m='及格'} 7 {$_ -ge 70 -and $_ -lt 90} {$m='良'} 8 {$_ -ge 90 -and $_ -lt 120} {$m='优'} 9 {$_ -eq 120} {$m='满分'} 10 } 11 $s+$n+' 评级:'+$m
当然也可以配合使用正则表达式
1 $n=Get-Random 100 2 $s='小明考试得分' 3 switch ($n) 4 { 5 {$_ -match '[0-6][0-9]|^0$'} {$m='不及格'} 6 default{$m='及格'} 7 } 8 $s+$n+' 评级:'+$m
当然你觉得麻烦还可以开启正则表达式参数
1 $n=Get-Random 100 2 $s='小明考试得分' 3 switch -Regex($n) 4 { 5 '[0-6][0-9]|^0$' {$m='不及格'} 6 default{$m='及格'} 7 } 8 $s+$n+' 评级:'+$m
开启通配符模式
1 $s='www.baidu.com' 2 switch -Wildcard($s) 3 { 4 'www*' {'匹配'} 5 default{'不匹配'} 6 }
开启精确模式,当前模式下必须条件完美匹配,才能符合条件语句
1 $s='www.baidu.com' 2 switch -Exact($s) 3 { 4 'www' {'匹配'} 5 default{'不匹配'} 6 }
开启大小写敏感模式,当前模式下,区分大小写(默认是不区分大小写)
1 $s='A' 2 switch -CaseSensitive($s) 3 { 4 'a' {'匹配'} 5 default{'不匹配'} 6 }
也可以多个参数同时存在
1 $s='A' 2 switch -CaseSensitive -Exact($s) 3 { 4 'A' {'匹配'} 5 default{'不匹配'} 6 }
文件模式,当前模式下匹配对应行
1 1..30|Out-File 1.txt 2 $f='1.txt' 3 switch -Regex -File($f) 4 { 5 '5' {'匹配 '+$_} 6 default{'不匹配 '+$_} 7 }
和文件模式一样,支持循环结构的匹配
1 $n=1..99 2 switch ($n) 3 { 4 {$_ -match 5} {$_} 5 }