From: Assaph Mehr Date: 2005-05-19T09:05:13+09:00 Subject: Re: accessing each character of a string Boris Glawe wrote: > Hi, > > my problem is obviously very basic, but how to I acces for example the third > character of the string "hello" ?? > > The [] method does not behave as expected, the each method returns the whole > string, the methods of Enumerable mixin don't help me... > > This can't be that hard to solve!? > > thanks Boris Just convert the Fixnum into a character: irb(main):005:0> s = 'hello' => "hello" irb(main):006:0> s[2] => 108 irb(main):007:0> s[2].chr => "l" >From the docs: -------------------------------------------------------------- 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 str.slice(fixnum) => fixnum or nil str.slice(fixnum, fixnum) => new_str or nil str.slice(range) => new_str or nil str.slice(regexp) => new_str or nil str.slice(regexp, fixnum) => new_str or nil str.slice(other_str) => new_str or nil ------------------------------------------------------------------------ Element Reference---If passed a single +Fixnum+, returns the code of the character at that position. If passed two +Fixnum+ objects, returns a substring starting at the offset given by the first, and a length given by the second. If given a range, a substring containing characters at offsets given by the range is returned. In all three cases, if an offset is negative, it is counted from the end of _str_. Returns +nil+ if the initial offset falls outside the string, the length is negative, or the beginning of the range is greater than the end. If a +Regexp+ is supplied, the matching portion of _str_ is returned. If a numeric parameter follows the regular expression, that component of the +MatchData+ is returned instead. If a +String+ is given, that string is returned if it occurs in _str_. In both cases, +nil+ is returned if there is no match. a = "hello there" a[1] #=> 101 a[1,3] #=> "ell" a[1..3] #=> "ell" a[-3,2] #=> "er" a[-4..-2] #=> "her" a[12..-1] #=> nil a[-2..-4] #=> "" a[/[aeiou](.)\1/] #=> "ell" a[/[aeiou](.)\1/, 0] #=> "ell" a[/[aeiou](.)\1/, 1] #=> "l" a[/[aeiou](.)\1/, 2] #=> nil a["lo"] #=> "lo" a["bye"] #=> nil