我通过让用户输入一个3位数来进行-eq
比较。如果第一个数字等于2 0,我需要将一个变量设置为一个值。问题是,0不等于0并且返回false。
如果$myNumber=0
这会返回错误的
$myNumber = Read-Host "Enter Number"
$firstNum = $myNumber.Substring(0,1)
if ($firstNum -eq '0') {write-host "True"} else {write-host "False"}
我试过了,仍然返回错误的
$myNumber = Read-Host "Enter Number"
$firstNum = $myNumber.Substring(0,1)
if ([int]$firstNum -eq [int]'0') {write-host "True"} else {write-host "False"}
我尝试了不同的组合,但我永远无法使其返回真值,但它适用于任何其他数字。
如果$myNumber=7
这将返回真正的
$myNumber = Read-Host "Enter Number"
$firstNum = $myNumber.Substring(0,1)
if ($firstNum -eq '7') {write-host "True"} else {write-host "False"}
我做错了什么?
您需要了解的第一件事是数字7和字符串"007"之间的区别。试试这些练习。
$s = '007'
if ($s[0] -eq '0') {'007 Starts with zero'} else {'007 Starts with non zero'}
$x = '707'
if ($x[0] -eq '0') {'707 Starts with zero'} else {'707 Starts with non zero'}
$n = 7
if ($n[0] -eq '0') {' 7 Starts with zero'} else {'7 Starts with non zero'}
接下来,您需要在不将数字输入转换为数字的情况下从主机读取。试试这个:
[string]$s = Read-Host 'Input 3 digits'
"Your input was $s"
if ($s[0] -eq '0') {'Input starts with zero'} else {'Input starts with non zero'}
尝试输入707,然后尝试输入007。