Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Re: String method to take subsections
Glenn
3/13/2008 1:15:00 PM
[Note: parts of this message were removed to make it a legal post.]
Thanks for your help, guys. All three suggestions are great.
It seems to me that returning an empty array instead of nil is actually better.
Glenn
----- Original Message ----
From: Paul Mckibbin <pmckibbin@gmail.com>
To: ruby-talk ML <ruby-talk@ruby-lang.org>
Sent: Wednesday, March 12, 2008 9:41:26 PM
Subject: Re: String method to take subsections
Glenn wrote:
> Hi,
>
> I'm looking for a method for the String class that returns an array of
> strings based on two input strings.
Regular expressions are your friend here:
class String
def containedby(startmark='a',endmark='b')
self.scan(Regexp.new(startmark+'([^'+endmark+']*)'+endmark)).flatten
end
end
should do what you want. If you want to restrict it to just one
character remove the * in ']*)'.
> 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).
>
Actually returns [] in both these cases, but I'm sure you can deal with
those.
Test Listing and output below:
====================================
class String
def containedby(startmark='a',endmark='b')
self.scan(Regexp.new(Regexp.escape(startmark)+'([^'+Regexp.escape(endmark)+']*)'+Regexp.escape(endmark))).flatten
end
end
TEST='xxxxxa1byyyyya2bzzzzzzz'
extracted=TEST.containedby('a','b')
puts extracted.inspect
extracted=TEST.containedby('a','c')
puts extracted.inspect
TEST2='b1a2'
extracted=TEST2.containedby('a','b')
puts extracted.inspect
=====================================
["1", "2"]
[]
[]
--
Posted via
http://www.ruby-...
.
1 Answer
Paul Mckibbin
3/13/2008 8:51:00 PM
0
Glenn wrote:
> Thanks for your help, guys. All three suggestions are great.
>
> It seems to me that returning an empty array instead of nil is actually
> better.
I'd be inclined to agree, although some might argue that a test for nil
is easier.
class String
def containedby(startmark='a',endmark='b')
x=self.scan(Regexp.new(Regexp.escape(startmark)+'([^'+Regexp.escape(endmark)+']*)'+Regexp.escape(endmark))).flatten
x.size > 0 ? x : nil
end
end
would return the error conditions as nil.
Mac
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Re: String method to take subsections
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password