@ ответа работает только maxple в когда интересующая подстрока находится в начале строки. Поскольку это не было частью спецификации (только в примере), я не думаю, что это разумное предположение. (@ Eric не делал этого предположения.)
Существует также двусмысленность в отношении вашего утверждения: «Отбросьте все после второй десятичной дроби». @maxple интерпретирует это как после второй десятичной точки (но также отбрасывает вторую десятичную точку), тогда как @Eric предположил, что это означает после второй десятичной цифры. Это то, что происходит, когда вопросы неточны.
Если подстрока находится в начале строки, и вы хотите отбросить вторую десятичную точку и все после этого, вот два способа сделать это.
str = "1.14.2.ab3-4.dl0.rhel"
1. Изменение @ регулярных выражений Эрика:
str[/\A\d+\.\d+/]
#=> "1.14"
2. Преобразовать строку в число с плавающей точкой, а затем обратно в строку:
str.to_f.to_s
#=> "1.14"
# 1 возвращает
nil
, если искомая подстрока не существует, w здесь # 2 возврат
"0.0"
. До тех пор, пока
"0.0"
не является допустимой подстрокой, либо можно использовать, чтобы определить, существует ли подстрока, а если это так, верните подстроку.
Учитывая, что регулярные выражения совпадают, что является преимуществом использования 'Строка # partition' над использованием Эриком из' Струнных # [] ' ? –
Я не верю, что есть какие-то преимущества, это еще один способ добиться того же результата. – rii