Ruby — получение первых X символов числовой строки

#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