下面的例子将If-ElseIF-Else转换成Switch语句
复制代码 代码如下:
# 使用 IF-ElseIF-Else
If( $value -eq 1 )
{
"Beijing"
}
Elseif( $value -eq 2)
{
"Shanghai"
}
Elseif( $value -eq 3 )
{
"Tianjin"
}
Else
{
"Chongqing"
}
# 使用 Switch
switch($value)
{
1 {"Beijing"}
2 {"Shanghai"}
3 {"Tianjin"}
4 {"Chongqing"}
}
1
测试取值范围
使用 Switch 时缺省的比较运算符为 -eq 等于,你也可以自己定制比较条件,将条件放在花括号中,必须保证条件表达式的返回值为布尔类型”$True”或”$False”
复制代码 代码如下:
$value=18
# 使用 Switch 测试取值范围
switch($value)
{
{$_ -lt 10} {"小于10"}
10 {"等于10"}
{$_ -gt 10} {"大于10"}
}
#输出
#大于10
没有匹配条件
在IF-Else语句中如果没有合适的条件匹配,可以在Else中进行处理,同样在Switch语句中如果case中没有条件匹配,可以使用关键字Default进行处理。
同样是上面的例子,稍加修改:
复制代码 代码如下:
$value=-7
# 使用 Switch 测试取值范围
switch($value)
{
{($_ -lt 10) -and ( $_ -gt 0) } {"小于10"}
10 {"等于10"}
{$_ -gt 10} {"大于10"}
Default {"没有匹配条件"}
}
#Output:
#没有匹配条件
多个条件匹配
如果case中有多个条件匹配,那么每个匹配的条件都会进行处理,例如:
复制代码 代码如下:
$value=2
# 使用 Switch 测试取值范围
switch($value)
{
{$_ -lt 5 } { "小于5" }
{$_ -gt 0 } { "大于0" }
{$_ -lt 100}{ "小于100"}
Default {"没有匹配条件"}
}
#小于5
#大于0
#小于100
如果碰到匹配条件时只处理一次,可以使用Break关键字
复制代码 代码如下:
$value=99
# 使用 Switch 测试取值范围
switch($value)
{
{$_ -lt 5 } { "小于5"; break}
{$_ -gt 0 } { "大于0"; break}
{$_ -lt 100} { "小于100"; break}
Default {"没有匹配条件"}
}
#大于0
比较字符串
之前的条件比较的都是数字,接下来比较字符串,默认的条件判断为-eq ,我们知道在Powershell中字符串的使用-eq比较大小写不敏感,所以才有下面的例子:
复制代码 代码如下:
$domain="www.jb51.net"
switch($domain)
{
"Www.jB51.net" {"Ok 1"}
"www.JB51.net" {"Ok 2" }
"WWW.jb51.NET" {"Ok 3"}
}
Ok 1
Ok 2
Ok 3
大小写敏感
怎样在比较字符串时能够恢复为大小写敏感模式,Switch有一个-case 选项,一旦指定了这个选项,比较运算符就会从-eq 切换到 -ceq,即大小写敏感比较字符串:
复制代码 代码如下:
$domain="www.jb51.net"
#大小写敏感
switch -case ($domain)
{
"Www.jB51.net" {"Ok 1"}
"www.JB51.net" {"Ok 2" }
"www.jb51.net" {"Ok 3"}
}
#Ok 3
使用通配符
字符串非常特殊,可是使用通配符,幸运的是Powershell也支持,果然Power啊。但是在Switch语句后要指定 -wildcard 选项
复制代码 代码如下:
$domain="www.jb51.net"
#使用通配符
switch -wildcard($domain)
{
"*" {"匹配'*'"}
"*.net" {"匹配*.net" }
"*.*.*" {"匹配*.*.*"}
}
匹配'*'
匹配*.net
匹配*.*.*
在字符串匹配中,比通配符功能更强大是正则表达式,Powershell的Switch语句也支持,真是太棒了。当然需要给Switch关键字指定选项-regex
复制代码 代码如下:
$mail="www@jb51.net"
#使用通配符
switch -regex ($mail)
{
"^www" {"www打头"}
"net$" {"net结尾" }
"d{1,3}.d{1,3}.d{1,3}.d{1,3}" {"IP地址"}
}
#www打头
#net结尾
同时处理多个值
Switch支持对集合所有元素进行匹配,下面的例子使用Powershell Switch语句演示打印水仙花数:
复制代码 代码如下:
$value=100..999
switch($value)
{
{[Math]::Pow($_%10,3)+[Math]::Pow( [Math]::Truncate($_%100/10) ,3)+[Math]::Pow( [Math]::Truncate($_/100) , 3) -eq $_} {$_}
}
#153
#370
#371
#407
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 王力宏.2015-你的爱【HomeBoy】【WAV+CUE】
- 泰迪罗宾.1984-天外人(2004环球复黑王)【宝丽金】【WAV+CUE】
- 《网络夜色风 2CD》[WAV/分轨][1GB]
- 《发烧金曲金装影视 绝对超值不容错过 2CD》[WAV/分轨][600MB]
- 《林俊杰 最具影响力的创作歌手 JJ林俊杰 2CD》[WAV+CUE][940MB]
- 《CATO 黄油猫》评测:和物理老师说再见……吗?
- 《Ara:不为人知的历史》:抗衡《文明》?4X游戏挑战者
- 《艾诺提亚:失落之歌》:令人失望的意大利特色试验品
- 《蛋仔派对》斯派克皮肤图鉴
- 黑神话悟空九种美酒在哪获得 黑神话悟空九种酒位置一览
- 黑神话悟空全丹药配怎么获取 黑神话悟空全丹药配方获取方式介绍
- 梁汉文2014-听后感[天凯唱片][WAV+CUE]
- 徐小明1984-剑胆琴心(LP版)[文志][WAV+CUE]
- 韩红-精选(庆功版)[WAV整轨]
- 《暗喻幻想:ReFantazio》获IGN法国满分评价:完美的新标杆之作