2009-06-29 8 views
2

Мне нужно преобразовать некоторые строки, и вытащить две первые числа, например:Как получить второе целое число в строке Ruby с to_i?

unkowntext60moreunknowntext25something

To:

@width = 60 
@height = 25 

Если я string.to_i, я получаю первое число : 60. Я не могу понять, как получить второе целое число, 25. Любые идеи?

ответ

12

Как о чем-то вроде:

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

Отлично! Это именно то, что я искал :) – atmorell

2

Вы можете использовать регулярное выражение, например (\d+), для захвата всех чисел в строке, а затем итерации групп захвата, преобразующих каждый в целое.

Редактировать: Я не знаю Ruby, поэтому я ответил на этот ответ в надежде, что рубист будет отображать пример кода.

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

это возвращает строки, а не целые числа –

+0

Это верно, вы можете легко изгоняют их в целое, используя to_i но что-то это просто прекрасно, чтобы держать их в виде строки (если приемнику не нужно получать целые числа или он снова возвращает их в строку. Это обычный случай, если вы используете @width и @height в помощнике Rals). –

Смежные вопросы