2010-12-11 27 views
4

Je suis juste assez fatigué, mais je ne vois pas une manière évidente pour analyser les chiffres d'une chaîne comme ceci:Analyser des allumettes répétées à partir d'une chaîne de rubis? Peut-être que

some text here, and then 725.010, 725.045, 725.340 and 725.370; and more text 

Une chose qui me vint: diviser ce par des espaces dans un tableau. Appliquez ensuite un test regex avec un groupe à chaque élément du tableau.

Existe-t-il un moyen plus propre et plus simple de faire cela?

+0

Merci pour les réponses, tout le monde. J'avais oublié le balayage de String #. Ce sont des numéros de loi, d'ailleurs. – Dogweather

Répondre

5

Vous devez String#scan:

your_string.scan(/\d\d\d\.\d\d\d/) 

volonté tableau de sortie des matches.

5
result = subject.scan(/\d+(?:\.\d+)?/) 

Ceci trouvera des nombres entiers ou décimaux dans une chaîne et les mettre (toujours sous forme de chaînes, bien que) dans le tableau result.

+1

Pour les obtenir comme des flottants, faites juste 'result = sujet.scan (/ \ d + (?: \. \ D +)? /). Map (&: to_f)'. –