Получив ожидаемый результат, вы можете использовать \b
, чтобы разделить строку и получить ожидаемый результат,
Вот код Java,
String s = "(int,x)";
System.out.println(Arrays.toString(s.split("\\b")));
Prints,
[(, int, ,, x, )]
Вы имеете верное представление. Это может быть сделано немного более сжато, хотя:
isNum = Float(whatAmI) rescue nil
Встраивание "спасения" является отличным развлечением. Заключите в скобки часть, которую Вы спасаете при помещении ее посреди большего количества материала, как:
if (isNum = Float(whatAmI) rescue nil) && isNum > 20
...
Это могло бы звучать чрезмерно очень важным, но на основе Вашего описания, Вы почти наверняка делаете что-то "неправильно"... Почему необходимо было бы проверить, является ли Строка допустимым представлением a Float
но не на самом деле преобразовывают Строку?
Это - просто догадка, но может быть полезно описать то, что Вы пытаетесь выполнить. Существует, вероятно, "лучший" путь.
Например, Вы могли бы хотеть вставить Строку в базу данных и соединить sql оператор с помощью конкатенации строк. Было бы предпочтительно преобразовать в Плавание, и использование подготовило операторы.
Если бы просто необходимо осмотреть "форму" строки, было бы предпочтительно использовать регулярное выражение, потому что, как dylan указанный, Плавание может быть представлено в любом количестве путей, которые могут или не могут быть соответствующими.
Вам, вероятно, также придется иметь дело с международным входом в Европе, запятая используется вместо периода в качестве десятичного разделителя, все же Плавания Ruby должны использовать (.).
Я не знаю о can_convert
метод, но обычно класс будет определять методы как to_s
, to_i
, to_hash
и так далее. Эти методы возвращают другое представление объекта, например, a to_s
метод возвратит строковое представление объекта.
Что касается фактического преобразования, я уверен, что кто-то еще может ответить что лучше, чем я.
На другой ноте, если Вы задаетесь вопросом, можно ли добавить метод ко всем строкам, Вы можете. Просто откройтесь String
класс и добавляет его!
class String
def can_convert?
...
end
end
Править: Строки, содержащие экспоненциальное представление, поддерживаются to_f
.
>> "6.02e23".to_f
=> 6.02e+23