Rubyでは文字列を配列のように扱えます。
疑問どうして、以下のs[0]だけ文字コードになるんでしょうね。s[0, 1]なら文字列なのに。
s = "abcdefg"
p s # => "abcdefg"
p s[0] # => 97 (なぜこれだけ文字コード?)
p s[0, 1] # => "a"
p s[2..4] # => "cde"
p s[2...4] # => "cd"
p s[2, 4] # => "cdef" (2番目から4文字)
s[2, 4] = "CDEF"
p s # => "abCDEFg"