PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.ruby > Re: String method to take subsections
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Re: String method to take subsections

Réponse
 
LinkBack Outils de la discussion
Vieux 13/03/2008, 14h14   #1
Glenn
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: String method to take subsections

[Note: parts of this message were removed to make it a legal post.]

Thanks for your , 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-forum.com/.





  Réponse avec citation
Vieux 13/03/2008, 21h51   #2
Paul Mckibbin
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: String method to take subsections

Glenn wrote:
> Thanks for your , 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-forum.com/.

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 03h07.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,09695 seconds with 10 queries