相关疑难解决方法(0)

为什么`-lt`对字符和字符串表现不同?

我最近回答了关于使用-lt-gt使用字符串的问题.我的回答是基于我之前读过的一些内容,它说-lt每次比较每个字符串中的一个字符,直到ASCII值不等于另一个字符串.此时结果(低/等/更大)决定.通过该逻辑,"Less" -lt "less"应该返回True因为L具有比ASCII更低的ASCII字节值l,但它不会:

[System.Text.Encoding]::ASCII.GetBytes("Less".ToCharArray())
76
101
115
115

[System.Text.Encoding]::ASCII.GetBytes("less".ToCharArray())
108
101
115
115

"Less" -lt "less"
False
Run Code Online (Sandbox Code Playgroud)

似乎我可能错过了一个关键部分:测试不区分大小写

#L has a lower ASCII-value than l. PS doesn't care. They're equal
"Less" -le "less"
True

#The last s has a lower ASCII-value than t. PS cares.
"Less" -lt "lest"
True

#T has a lower ASCII-value than t. PS doesn't care
"LesT" -lt "lest" …
Run Code Online (Sandbox Code Playgroud)

powershell operator-overloading operators

6
推荐指数
1
解决办法
558
查看次数