代码部分
function ConvertToInt($myinput) {
$myinput = $myinput.Trim()
if ($myinput -match "^[0-9]+$") {
return [int]$myinput
}
else {
Write-Host "输入的不是一个数字,请重新输入。"
return $null
}
}
$num1 = Read-Host "请输入第一个数"
$num2 = Read-Host "请输入第二个数"
$intNum1 = ConvertToInt $num1
$intNum2 = ConvertToInt $num2
if ($null -eq $intNum1 -or $null -eq $intNum2) {
Write-Host "输入的不是一个数字,请重新输入。"
}
else {
$sum = $intNum1 + $intNum2
Write-Host "整型和为: $sum"
}
首先定义了一个函数ConvertToInt($myinput)这个函数用来将输入的字符串转化为整形,同时输入内容是否为数字
函数ConvertToInt($myinput)中的方法Trim()用来删除字符串的开始和结束处的所有空白字符,这样处理后,$myinput 变量将只包含原始字符串中的实质性字符,而不包含任何首尾空格
-match是一个运算符,用于对一个字符串进行正则表达式的匹配
如果-match后面是字符串而不是正则表达式,那么如果前面的字符串包含后面的字符串就会返回$true,否则会返回$false.
如果-match后面是正则表达式,那么-match会对该字符串进行正则表达式的匹配。
就如 %myinput -match "^[0-9]+$"。"^[0-9]+$"是一个正则表达式,匹配的是完全由一个或多个数字组成的字符串,%myinput -match "^[0-9]+$":如果%myinput 是完全由数字组成的字符串就会返回$true,否则返回%false
然后是一个if条件语句,再次判断输入的是否是数字
这里-eq是一个比较运算符,注意和$null比较时,要把$null放在前面