'10:' < '1:'
# => true
有人可以解释一下为什么上面例子中的结果是真的吗?如果我只是比较'1:'和'2:'我会得到预期的结果:
'1:' < '2:'
# => true
答案 0 :(得分:2)
字符串逐字符比较。
当您比较1:
与2:
时,比较从2
与1
开始,比较将在此处停止并显示预期结果。
当您比较1:
与10:
时,比较从1
vs 1
开始,由于它是平局,比较将继续进行下一次比较,这是:
vs 0
,并且比较在那里停止,结果是您发现了令人惊讶的结果(假设您希望比较字符串中的整数)。
要进行预期的比较,请使用to_i
将两个操作数转换为整数。
答案 1 :(得分:1)
ASCII中的字符比较。
'10:' < '1:'
是(49 < 49) || (48 < 58) || (58 < ?)
#=> true
'1:' < '2:'
是(49 < 50) || (58 < 58)
#=> true
使用从左到右的布尔检查,并检查在哪里找到true的中断。
注意:这只是我对各种示例模式的观察。
答案 2 :(得分:0)
两个字符串中每个字符串的第一个字符是相同的。正如Dave在评论中所说,第一个字符'0'的第二个字符小于':',所以第一个字符串小于第二个字符。
答案 3 :(得分:0)
因为0
的ASCII码是48,小于:
的ASCII码,即58。