From: Hugh Sasse Date: 2006-09-16T01:20:29+09:00 Subject: Re: Need help about Ruby with text file On Sat, 16 Sep 2006, Oscar Lok wrote: > By the way, may I know that is there any function like e.g. left(line, > 3), right(line, 2) and mid(line, 1, 4) to extract letter from a line, > please? > e.g. > mid(gghhii,3,2) return hh > left(gghhii,3) return ggh > right(gghhii,3) return hii ri String#[] gives (for ruby-1.8.5): -------------------------------------------------------------- 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 Take the time to explore ri, which you should have on your system. It is very good. > > Thanks! > Oscar > Hugh