下面的例子將If-ElseIF-Else轉(zhuǎn)換成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
比較字符串
之前的條件比較的都是數(shù)字,接下來比較字符串,默認的條件判斷為-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語句演示打印水仙花數(shù):
復制代碼 代碼如下:
$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
您可能感興趣的文章:- Windows Powershell Switch 循環(huán)
- window下homestead開發(fā)環(huán)境安裝詳細教程
- 詳細分析Windows Home Server是什么?
- Windows Home Server OEM 正式版 下載地址
- 解決windows10下"sqlplus / as sysdba"執(zhí)行提示無權限問題
- Windows下Apache應用環(huán)境塔建安全設置(目錄權限設置)
- windows10打開switchHost 提示無修改權限問題解決