From: "David A. Black" Date: 2008-03-13T09:53:16+09:00 Subject: Re: String method to take subsections Hi -- On Thu, 13 Mar 2008, Glenn wrote: > Hi, > > I'm looking for a method for the String class that returns an array of strings based on two input strings. > > For example, if you had the string 'xxxxxa1byyyyya2bzzzzzzz' I'd like it to return the smaller strings between 'a' and b', but I don't want the smaller strings to include either 'a' or 'b'. > > So, 'xxxxxa1byyyyya2bzzzzzzz'.method_x('a', 'b') would return ["1", "2"]. > > If you had the string 'a1b2' and tried 'a1b2'.method_x('a', 'c') you'd get nil because 'c' is obviously not in the String that's calling the method. > > Likewise, if you tried 'a1b2'.method_x('b', 'a') it would also return nil since there's no string between 'b' and 'a' (so the order matters). > > I looked but didn't see anything quite like this. Have a look at String#scan. 'xxxxxa1byyyyya2bzzzzzzz'.scan(/a(.*?)b/) => [["1"], ["2"]] It may not be an exact fit for the calling syntax you want but you could wrap it in something else. David -- Upcoming Rails training from David A. Black and Ruby Power and Light: ADVANCING WITH RAILS, April 14-17 2008, New York City CORE RAILS, June 24-27 2008, London (Skills Matter) See http://www.rubypal.com for details. Berlin dates coming soon!