Может кто-нибудь объяснить мне, почему эти сравнения работают так, как делают. У меня была ошибка в одном из моих сценариев, которые заставили меня немного поработать. Я использовал read-host и набрал номер. Он хранил его как строку.Сравнительная строка вопроса против int
Write-Host "(`'2`' -gt 9) = " ('2' -gt 9)
Write-Host "(2 -gt 9) = " (2 -gt 9)
Write-Host "(`'2`' -gt 10) = " ('2' -gt 10)
Если вы сравниваете строку с Int, она использует значение Ascii? Если да, то почему первый показывает $ false, он должен быть равен $ true.
Тогда как это происходит, когда вы меняете int на 10, оно становится равным $ true.
Роман вы можете указать мне ссылку на то, как строки сравниваются с -gt, -lt и т. Д. Теперь я понимаю процесс конверсии, но все еще запутался в том, почему «2» больше, чем «10». Спасибо – Mike
Я постараюсь перефразировать. Я думаю, что вас путают * цифры * в строках, но они просто персонажи. Забудьте о * числах *, думаете * символы *. Чтобы упростить замену 0-> a, 1-> b, 2-> c, вы получите аналогии «c» и «ba» для «2» и «10». Теперь «c» -gt «b» (в алфавитном порядке), как «2» -gt «1». И любая строка, начинающаяся с «c», есть -gt любая строка, начинающаяся с «b», например. "c" -gt "ba". То же самое верно для любой строки «2 ....» и «1 ....», например «2» -gt «10». –
Спасибо, я думаю, я был смущен тем, как строки сравниваются, когда у вас нет одинакового количества символов с каждой стороны. Он сравнивает только количество символов, которые находятся слева. – Mike