#ruby-on-rails #regex #ruby
#ruby-on-rails #регулярное выражение #ruby
Вопрос:
Каким будет метод, который создаст эти результаты? Боюсь, я не очень хорошо разбираюсь в регулярных выражениях и не вижу относительно простого способа добиться этого
"100124" => "100124"
"100asdf124" => "100"
"1asdf124" => "1"
"100 124" => "100"
"1 124" => "1"
"100.124" => "100"
"1.124" => "1"
Обновить
Это НЕ то же самое, что извлечение чисел из строки! Поскольку я не хочу извлекать ВСЕ числа из строки, только ПЕРВЫЙ набор, пока какой-либо другой символ, пробел, знак препинания или что-то еще, что не является числом, не прерывает его! Добавлено больше примеров, чтобы было понятно
Комментарии:
1.
"100asdf124"[/d /] #=> "100"
.2. Вы также просто вызываете
to_i
строку. Он вернет первые символы, которые могут быть преобразованы в целые числа3. @Intl,
a1.to_i #=> 0
, который не различает между'0a.to_i #=> 0
. Кроме того, OP хочет вернуть строку, а не целое число. Я предполагаю'a1'
, что это возврат'1'
илиnil
, но это не ясно из вопроса.4. Каков ожидаемый результат, если строка не начинается с цифры или вообще не содержит цифр?
Ответ №1:
Решает ли этот метод вашу проблему?
def numeric_prefix(string)
match = string.match(/^d /)
match[0] if match
end