Вам нужно подумать о том, какой алгоритм вы бы хотели использовать для этого, поскольку это не совсем очевидно. Если подстрока имеет значение asdf.1asdf
, должно ли это быть проанализировано как десятичное значение 0.1
или просто 1
?
Кроме того, могут ли некоторые из встроенных чисел быть отрицательными? Если нет, то это значительно упрощает пространство поиска.
Я думаю, что aix находится на правильном пути с использованием регулярных выражений, поскольку, как только вы придумаете алгоритм, это будет похоже на работу конечного автомата (просматривайте ввод, пока не найдете цифра или (необязательно) -
или .
, затем найдите следующий «недопустимый» символ и проанализируйте подстроку в обычном режиме).
Это крайние случаи, о которых вам следует подумать - например, без отрицательных чисел вы можете почти использовать s.split("[^0-9.]")
и отфильтровывать непустые элементы. Тем не менее, символы периода, которые не являются частью числа, получат вас. Какое бы решение вы ни выбрали, подумайте о том, могут ли какие-то ситуации привести его в порядок.