On Aug 11, 6:52 pm, Daniel DeLorme <dan... / dan42.com> wrote: > Stefan Rusterholz wrote: > > Ew, that's awfully complex. You create n new objects from which you > > throw n-1 away again... > > Think of the memory! ;-) > > def first; self[0,1]; end; def last; self[-1,1]; end > > wrong, that's the first and last *bytes*, not characters. For Ruby 1.9+ it will just be: def first; self[0]; end; def last; self[-1]; end my own version is (basically): def first(pattern=//) split(pattern).at(0) end which is a little more versatile. but I see the point about the memory, and I'll add an optimization clause come 1.9. T.