On 10-06-18 02:09 PM, Michael Fellinger wrote: > On Sat, Jun 19, 2010 at 3:43 AM, Josh Cheek<josh.cheek / gmail.com> wrote: >> On Fri, Jun 18, 2010 at 12:46 PM, Abder-rahman Ali< >> abder.rahman.ali / gmail.com> wrote: >> >>> When I try for example to compare the following strings in Ruby, I get >>> "true". >>> >>> puts 'Xeo'< 'ball' >>> >>> When I make 'Xeo' start with a lowercase letter, i get 'false' >>> >>> puts 'xeo'< 'ball' >>> >>> The second statement is clear, but why when I capitalize 'Xeo' I get >>> true? That's an artifact of the old ASCII encoding. Uppercase letters came out first so they have a lower integer value than uppercase. >>> >>> Thanks. >>> -- >>> Posted via http://www.ruby-forum.com/. >>> >>> >> Well, this used to be easy to show, but apparently since ascii has been >> abandoned, and I don't know unicode, I have to resort to hacky things like >> this to explain it. >> >> >> $chars = (1..128).inject(Hash.new) { |chars,num| chars[num.chr] = num ; >> chars } >> >> def to_number_array(str) >> str.split(//).map { |char| $chars[char] } >> end >> >> to_number_array 'Xeo' # => [88, 101, 111] >> to_number_array 'xeo' # => [120, 101, 111] >> to_number_array 'ball' # => [98, 97, 108, 108] >> to_number_array 'ABC' # => [65, 66, 67] >> to_number_array 'abc' # => [97, 98, 99] > >>> %w[Xeo xeo ball ABC abc].sort.each{|word| p word => word.codepoints.to_a } > {"ABC"=>[65, 66, 67]} > {"Xeo"=>[88, 101, 111]} > {"abc"=>[97, 98, 99]} > {"ball"=>[98, 97, 108, 108]} > {"xeo"=>[120, 101, 111]} > => ["ABC", "Xeo", "abc", "ball", "xeo"] > > -- "It's the preponderance, stupid!" - Professor Stephen Schneider, IPCC member