On Apr 16, 2009, at 6:40 PM, Reg wrote:

> The "Ruby_RegularExpression" sample application in the
> javapassion rubyonrails tutorial has this code
>
> puts "----Regular Expression"
> puts   a = "hello there"
> puts   a[1]                   #=> 101
> puts   a[1,3]                 #=> "ell"
>
> How do you get 101 from a[1]

It's the value associated with the character e in ASCII.

In irb:

 > RUBY_VERSION
=> "1.8.6"
 >> a = 'hello'
=> "hello"
 >> a[1]
=> 101
 >> ?e
=> 101
 >> a[1 ,1]
=> "e"
 >>


If you look at the ri documnetation for String#[] in Ruby 1.8.6 you  
can see:

-------------------------------------------------------------- String#[]
      str[fixnum]                 => fixnum or nil
      str[fixnum, fixnum]         => new_str or nil
      str[range]                  => new_str or nil
      str[regexp]                 => new_str or nil
      str[regexp, fixnum]         => new_str or nil
      str[other_str]              => new_str or nil
[...]
------------------------------------------------------------------------
      Element Reference---If passed a single +Fixnum+, returns the code
      of the character at that position.
[...]

In Ruby 1.9 things change so that you always get a String or nil back  
from String#[]:

irb(main):001:0> RUBY_VERSION
=> "1.9.2"
irb(main):002:0> a = 'hello'
=> "hello"
irb(main):003:0> a[1]
=> "e"
irb(main):004:0>

Hope this helps,

Mike

-- 

Mike Stok <mike / stok.ca>
http://www.stok.ca/~mike/

The "`Stok' disclaimers" apply.