字符串
所有用双引号引上的就是字符串
任意字符串+任意数据类型,结果为字符串
任意数据类型+字符串,结果为 前面的数据类型(a + S)的结果为a的数据类型
在命令当中 -relpace 大小写是不敏感的
在方法当中 .relpace 大小写是敏感的
在字符串当中 -eq 通常用来判断两个字符串是否相等
[string]::IsNullOrEmpty(str) null "" 一次可以进行两次判空
写脚本的时候很少使用命令,都是用的方法,
常用方法与属性
**属性**
Length--用于获得字符串长度
**方法**
replace--替换字符串
Equals--和“-eq”命令一样 用于判断两个字符串是否相等,推荐使用方法
Contains--判断字符串是否包含指定的字符串
Endswith--判断字符串是否以指定的字符串结尾
Startswith--判断字符串是否以指定的字符串开始的
Split()--命令拆分
SubString--只有一个参数,表示从指定位置开始到字符串结束,两个参数,
表示从指定位置开始,到指定长度结束
IndexOf--查找指定字符串在当前字符串第一次出现的位置,
LastIndexOF--查找指定字符串在当前字符串中最后一次出现的位置
ToUpper--当前字符串全部转大写
Tolower--当前字符串全部转小写
Insert--在指定位置添加指定字符串
Remove--从指定位置移除指定长度的字符串
Powershell也是面向对象的
逻辑控制语句
一个括号里面为一个代码块
一个代码块当中可以嵌套另一个代码块
if当中的且只要有一个条件不为真就会直接false
if正确结构
if-else
if-elseif-else
if-else!!!elseif
逻辑运算符
或 -or || 当左右两个条件满足其中一个时,条件就成立
且 -and && 当左右两个条件同时被满足时,条件才成立
关系运算符
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
[String]::IsNu110rEmpty(str) 判断字符串是否为空
-match 判断字符串是否匹配给定正确的表达式
数字运算符
+ 加运算
- 减运算
* 乘运算
% 求模运算
/ 除运算
+= 相加并赋值
-= 相减并赋值
++ 自增运算
-- 自减运算
#循环控制
while
while(条件体){
}
for
for(定义变量;变量判断;变量自增或自减){
}
Break 退出整个循环
continue 退出本次循环
课后练习题
1.从键盘输入一个字符,判断这个字符是数字,还是大写字母,还是小写字母,还是符号。
while(1 -eq 1){
[char]$a = Read-Host("输入一个字符")#输入一个字符定义为char类型#
if(($a -ge 48) -and ($a -le 57)){
Write-Output("你输入的是一个数字")
}elseif(($a -ge 65) -and ($a -le 90)){
Write-Output("你输入的是一个大写字母")
}elseif(($a -ge 97) -and ($a -le 122)){
Write-Output("你输入的是一个小写字母")
}elseif($a -eq "e")
{
break
}
else{
Write-Output("你输入的一个字符")
}
}
2.从键盘输入一个字符串,统计这个字符串当中包含几个大写字母,几个小写字母,几个数字,几个符号
[string]$a = Read-Host "请输入一个字符串"
$b_array = $a.ToCharArray()#将字符串转成字符并放到数组里面#
[int]$big = 0
[int]$small = 0
[int]$num = 0
[int]$other = 0
foreach($d in $b_array){
if($d -ge 48 -and $d -le 57){
$num++
}elseif($d -ge 65 -and $d -le 90){
$big++
}elseif($d -ge 97 -and $d -le 122){
$small++
}else{
$other++
}
}
Write-Output($num++,$big++,$small++,$other++)
3.计算3位数(100~999)的水仙花数。水仙花数是指每一位的立方体相加等于该数自己,比如153=1^3+5^3+3^3.
for($i = 100;$i -lt1000;$i++){
[string]$d = $i
[int]$a = $d.Substring(0,1)
[int]$b = $d.Substring(1,1)
[int]$c = $d.Substring(2)
if($num =($a * $a * $a)+($b * $b * $b)+($c * $c * $c) -eq $i){
Write-Output("{0}是一个水仙花数" -f $i)
}
}
4.字符串判断:从键盘输入一个字符串,判断该字符串是否为可以被转换为有效数字
5.打印99乘法表。
6.一个1000以内的整数,它加上100和加上268后都是一个完全平方数,请问该数是多少
for($i = 1;$i -lt 10000;$i++){
for($g = 1;$g -lt 100;$g++){
if(($g * $g) -eq ($i + 100)){
for($f = 1;$f -lt 100;$f++){
if(($f * $f) -eq ($i + 268)){
Write-Output($i)
}
}
}
}
}
7.拆分字符串“网络安全空间”,拆分成网络、络空、空间、间安、安全
[string]$i = "网络空间安全"
Write-Host($i.Split("空间安全"),$i.Split("网间安全"),$i.Split("网络安全"),$i.Split("网络空全"),$i.Split("网络空间"))
8.对3、65、22、102、4进行降序排列
$a_array = 3,65,22,102,4
for($h = 0;$h -lt 5 - 1;$h++){
for($j = 0;$j -lt 5 - $i -1;$j++){
if($a_array[$j] -gt $a_array[$j+1]){
$temp = $a_array[$j]
$a_array[$j] = $a_array[$j+1]
$a_array[$j+1] = $temp
}
}
}
Write-Output($a_array)
9.计算1000以内所有的质数
#定义为1000以内的数字#
[int]$a=1000
#定义b默认值为1是质数,0是合数#
[int]$b=1
#2这数字是最小的质数,为了方便后面的计算,直接打出来#
write-output(2)
#第一个内循环范围是在3-1000里面,每次内循环结束后都要把$b的值重置为默认值#
#这里是第二次外循环,除了1和它本身,挨个取模,lt小于#
#$i%$j结果如果为0说明是合数,他的结果需要用一个值表示所以用$b=0,然后break结束这次循环进去下一次循环,le于等于#
for($i=3;$i -le $a;$i++){
$b=1
for($j=2;$j -lt $i;$j++){
if($i%$j -eq 0){
$b=0
break
}
}
#内循环结束以后如果该数字不是合数,则$b还是默认值1,此时可以确定该数字就是质数#
if($b -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($g=0;$g -lt ($i+$i-1);$g++){
Write-Host "*" -NoNewline
}
Write-Output("")
}