Powershell: получение 0 из сравнения Read-Host и Substring с 0 возвращает false - PullRequest
0 голосов
/ 05 апреля 2020

Я делаю сравнение -eq, когда пользователь вводит число 3 di git. Если первое число равно двум 0, мне нужно установить переменную в значение. Проблема в том, что 0 не равно 0 и возвращает false.

Если $ myNumber = 0

Это возвращает false

$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

Это возвращает true

$myNumber = Read-Host "Enter Number"
$firstNum = $myNumber.Substring(0,1)
if ($firstNum -eq '7') {write-host "True"} else {write-host "False"}

Что я делаю не так?

1 Ответ

1 голос
/ 05 апреля 2020

Первое, что вам нужно понять, это разница между числом 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'}

Далее вам нужно читать с хоста, не преобразовывая цифру c, введенную в число. Попробуйте это:

[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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...