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