ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Windows PowerShell 学习笔记(二)

2020-06-24 17:07:02  阅读:363  来源: 互联网

标签:匹配 Windows 笔记 Write ++ int Output array PowerShell


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. 从键盘输入一个字符,判断这个字符是数字,还是大写字母,还是小写字母,还是符号。
//PowerShell中,String类型不能直接转ASCII码,先转成 char 类型,就可以转成 int 类型
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)

在这里插入图片描述
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)
    }
}

在这里插入图片描述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("")
}

在这里插入图片描述
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)
                }
            }
        }
    }
}

在这里插入图片描述

  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))

在这里插入图片描述
8. 对3、65、22、102、4 进行降序排序。

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

在这里插入图片描述
9. 计算200 以内的所有质数(即只有1 和其自身能够被这个数整除的数),建议使用至少3 种算法实现,看看哪一种算法的运算次数最少。

//方法1:判断比 i 小的数里面是否有 i 的因数,有的话,则不是质数;反之就是质数
for($i=2;$i -le 200;$i++){
    for($j=2;$j -lt $i;$j++){
        $flag=1
        if(($i%$j) -eq 0){
            $flag=0
            break
        }
    }
    if($flag -eq 1){
            Write-Output($j)
    }
}
//方法2:对方法1的升级版,不需要对小于 i 的所有数进行判断,因数肯定是两两出现的,且一个小于根号i,一个大于根号i ,故只需要判断根号 i 以内的数
for($i=2;$i -le 200;$i++){
    $genhao=[math]::Sqrt($i)
    for($j=2;$j -le $genhao;$j++){
        $flag=1
        if(($i%$j) -eq 0){
            $flag=0
            break
        }
    }
    if(($i -eq 2)-or ($i -eq 3)){    // 两个较小数单独讨论
        $flag = 1
    }
    if($flag -eq 1){
            Write-Output($i)
    }
}

10.设定的总行数line 可以随机修改,修改后仍然能打印出line 行的直角三角形。
打印如下两种三角形图形:
在这里插入图片描述

for($i=1;$i -lt 6;$i++){
    for($j=0;$j -lt $i;$j++){
        Write-Host "*" -NoNewline
    }
    Write-Output("")
}

在这里插入图片描述

for($i=1;$i -lt 6;$i++){
    for($j=6-$i;$j -gt 1;$j--){
       Write-Host " " -NoNewline
    }
    for($k=0;$k -lt ($i+$i-1);$k++){
       Write-Host "*" -NoNewline
    }
    Write-Output("")
}

在这里插入图片描述

标签:匹配,Windows,笔记,Write,++,int,Output,array,PowerShell
来源: https://blog.csdn.net/TurborX/article/details/106906810

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有