Powershell:从读取主机和子字符串中获取0与0的比较返回false



我通过让用户输入一个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。

最新更新