Самый элегантный способ определить, является ли String числом? - PullRequest
8 голосов
/ 11 декабря 2008

Есть ли лучший, более элегантный (и / или, возможно, более быстрый) способ, чем

boolean isNumber = false;
try{
   Double.valueOf(myNumber);
   isNumber = true;
} catch (NumberFormatException e) {
}

...


Редактировать : Поскольку я не могу выбрать два ответа, я выбираю один из регулярных выражений, потому что а) это изящно и б) говорить "Джон Скит решил проблему" - это тавтология, потому что сам Джон Скит - решение всех проблем.

Ответы [ 11 ]

0 голосов
/ 12 декабря 2008

Если вам нужно что-то невероятно быстрое и у вас есть четкое представление о том, какие форматы вы хотите принять, вы можете создать конечный автомат DFA вручную. По сути, так или иначе работают регулярные выражения, но вы можете избежать этапа компиляции регулярных выражений таким образом, и он вполне может быть быстрее, чем универсальный компилятор регулярных выражений.

...