欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Windows PowerShell 学习笔记(二)

程序员文章站 2024-03-15 19:59:54
...

powershell 逻辑控制语句

顺序结构

从上到下,从左到右运行

$xiaoming = "I am the most handsome man of the world."
$xiaoli = "Bullshit!"
write-output("小明说:"+ xiaoming , xiaoli+ "小李嫉妒地说道。") 

分支结构

if-else
if-elseif-else
if-if(会执行所有的 if 分支)
分支结构嵌套

逻辑运算符

-not --- 非 运算,表达式为true则返回false,反之返回true
-or --- 或 运算,有一个表达式为true则返回true
-and --- 与 运算,两个表达式均为true才返回true
-xor --- 逆或 运算,

关系运算符

-eq --- 检测两个数是否 相等 ,相等返回true。 $a -eq $b
-ne --- 检测两个数是否 不相等。
-gt --- 检测左边的数是否 大于 右边的数
-ge --- 检测左边的数是否 大于等于 右边的数
-lt --- 检测左边的数是否 小于 右边的数
-le --- 检测左边的数是否 小于等于 右边的数
[String]::IsNullOrEmpty(str) --- 判断字符串是否为空
-match --- 判断字符串是否匹配给定的正则表达式

正则表达式

^ --- 在字符串的开始匹配
. --- 匹配出了换行符之外的任意字符
[^abc] --- 匹配除了包含在中括号的任意字符
[abc] --- 匹配括号中指定的任意一个字符
[a-z] --- 匹配括号中指定的任意区间之中的任意一个字符
[^a-z] --- 匹配除了包含在括号指定区间字符的字符
\B --- 不在单词的边界匹配
\Z --- 在字符串的结尾匹配(包含多行文本)
\uFFFF --- 匹配 Unicode 字符的十六进制代码 FFFF。eg:欧元符号的代码20AC
\v --- 匹配纵向制表符(ASCII 11) 
\w --- 匹配字符、数字和下划线
\W --- 匹配字符、数字和下划线以外的字符
\a --- 响铃字符(ASCII 7)
\c or \C ---匹配 ASCII 中的控制字符, eg:Ctrl+C
\d --- 匹配数字字符,等同于[0-9]
\D --- 匹配数字以外的字符,等同于[^0-9]
\e --- Esc (ASCII 9)
\f --- 换页符(ASCII 15)
\n --- 换行符
\r --- 回车符
\s --- 白空格(空格、制表符、新行)
\S --- 匹配(空格、制表符、新行)以外的字符
\t --- 制表符
\A --- 在字符串的开始匹配(包含多行文本)
\b --- 在字符串的边界匹配
\xnn --- 匹配特色字符,nn 代表十六进制的ASCII 码
.* --- 匹配任意数量的字符(包括0个字符)
* --- 匹配一个元素 0 次或多次(最大限度地匹配)
*? --- 匹配前面的元素 0 次或多次(最小限度地匹配)
? --- 匹配上一个元素 0 次或 1 次(最大限度地匹配)
?? --- 匹配上一个元素 0 次或 1 次(最小限度地匹配)
{n,} --- 匹配上一个元素至少 n 次
{n,m} --- 匹配上一个元素 n~m 次
{n} --- 匹配上一个元素 n 次
+ --- 匹配上一个元素 1 次或多次
$ --- 在字符串的结尾匹配

循环结构

while

while(判断条件){
	循环语句
}

for

for(定义变量;变量判断;变量自增自减){
	循环语句
}

循环控制

Continue --- 退出本次循环
Break --- 退出整个循环

练习

  1. 从键盘输入一个字符,判断这个字符是数字,还是大写字母,还是小写字母,还是符号。
Write-Output("请输入一个字符:")
[char]$c=Read-Host
[int]$int_char = $c
if(($int_char -ge 48)-and ($int_char -le 57)){
    Write-Output("这是一个数字")
}
elseif(($int_char -ge 65)-and ($int_char -le 90)){
    Write-Output("这是一个大写字母")
}
elseif(($int_char -ge 97)-and ($int_char -le 122)){
    Write-Output("这是一个小写字母")
}
else{
    Write-Output("这是一个特殊符号")
}
  1. 统计字符:从键盘输入一个字符串,统计这个字符串当中包含几个大写字母,几个小写字母,几个数字,几个特殊符号。
Write-Output("请输入一个字符串:")
$a=Read-Host
[char[]]$char_array = $a.ToCharArray()
[int]$length = $char_array.Length
$sumUp=0
$sumLow=0
$sumNum=0
$sumSpe=0
for($i=0;$i -lt $length;$i++){
    $int_array= [int]($char_array[$i])
    if(($int_array -ge 65)-and ($int_array -le 90)){
        $sumUp++
    }
    elseif(($int_array -ge 97)-and ($int_array -le 122)){
        $sumLow++
    }
    elseif(($int_array -ge 48)-and ($int_array -le 57)){
        $sumNum++
    }else{
        $sumSpe++
    }
}
Write-Output("这个字符串中包含{0}个大写字母,{1}个小写字母,{2}个数字及{3}个特殊符号" -f $sumUp,$sumLow,$sumNum,$sumSpe)

Windows PowerShell 学习笔记(二)
3. 水仙花数:计算三位整数(100~999)的水仙花数。水仙花数是指每一位的立方相加等于该数自己,比如153 = 1^3 + 5^3 +3^3

for($i=100;$i -lt 1000;$i++){
    [string]$s=$i

    [int]$bai = $s.SubString(0,1)
    [int]$shi = $s.SubString(1,1)
    [int]$ge = $s.SubString(2)
    if(($bai*$bai*$bai)+($shi*$shi*$shi)+($ge*$ge*$ge) -eq $i){
        Write-Output("这是一个水仙花数:{0}" -f $i)
    }
}

Windows PowerShell 学习笔记(二)4. 字符串判断:从键盘输入一个字符串,判断该字符串是否可以被转换为一个有效的数字。

Write-Output("请输入一个字符串:")
$s = Read-Host
$else = "[^0-9]"
if($s.Length -eq 1){
    Write-Output("能被转换为一个有效的数字")
}elseif($s.Length -ge 2){
    if($s -match $else){
        Write-Output("不能被转换为一个有效的数字")
    }else{
        Write-Output("能被转换为一个有效的数字")
    }
}
  1. 打印99 乘法表。
for($i=1;$i -lt 10;$i++){
    for($j=1;$j -le $i;$j++){  
            $sum = $i * $j
            Write-Host("{0} * {1} = {2}  " -f $i,$j,$sum) -nonewline
    }
    Write-Output("")
}

Windows PowerShell 学习笔记(二)
6. 一个10000 以内整数,它加上100 和加上268 后都是一个完全平方数,请问该数是多少?

for($i=1;$i -lt 10000;$i++ ){
    for($j=1;$j -lt 100;$j++ ){
        if(($j*$j) -eq ($i + 100) ){
            for($k=1;$k -lt 100;$k++ ){
                if(($k*$k) -eq ($i + 268)){
                    Write-Output($i)
                }
            }
        }
    }
}

Windows PowerShell 学习笔记(二)

  1. 拆分字符串:“网络空间安全”,拆分成网络、络空、空间、间安、安全
$s="网络空间安全"
Write-Output($s.Substring(0,2))
Write-Output($s.Substring(1,2))
Write-Output($s.Substring(2,2))
Write-Output($s.Substring(3,2))
Write-Output($s.Substring(4))

Windows PowerShell 学习笔记(二)
8. 对3、65、22、102、4 进行降序排序。

$array_data=3,65,22,102,4
for($i=0;$i -lt $array_data.Length;$i++){  
    for($j=$i+1;$j -lt $array_data.Length;$j++){
        if($array_data[$i] -lt $array_data[$j]){
            $temp=$array_data[$i]
            $array_data[$i]=$array_data[$j]
            $array_data[$j]=$temp

        }
    }
}
Write-Output($array_data)

Windows PowerShell 学习笔记(二)
9. 计算200 以内的所有质数(即只有1 和其自身能够被这个数整除的数),建议使用至少3 种算法实现,看看哪一种算法的运算次数最少。

10.设定的总行数line 可以随机修改,修改后仍然能打印出line 行的直角三角形。
打印如下两种三角形图形:
Windows PowerShell 学习笔记(二)

相关标签: powershell