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? >> >> 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] = numhars } > > 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"] -- Michael Fellinger CTO, The Rubyists, LLC