2009-06-29 7 views

Répondre

12

Que diriez-vous quelque chose comme:

text = "unkowntext60moreunknowntext25something" 
@width, @height = text.scan(/\d+/).map { |n| n.to_i } #=> 60, 25 
+0

Parfait! C'était exactement ce que je cherchais :) – atmorell

2

Vous pouvez utiliser une expression régulière comme (\d+) pour capturer tous les nombres de la chaîne, puis itérer les groupes de capture convertissant chacun d'eux en nombre entier.

Modifier: Je ne connais pas Ruby, donc j'ai wiki cette réponse dans l'espoir qu'un Rubisiste donnerait un exemple de code.

4
@width, @height = "unkowntext60moreunknowntext25something".scan(/[0-9]+/) 
+0

cela renvoie des chaînes, pas des entiers –

+0

C'est vrai, vous pouvez facilement les entraînes int en utilisant to_i mais quelque chose qu'il est très bien pour les garder sous forme de chaîne (si le le récepteur n'a pas besoin d'obtenir des entiers ou les renvoie à la chaîne, ce qui est un cas courant si vous utilisez @width et @height dans un assistant Rals). –

Questions connexes