仕事で気になった。COBOLでは、ある領域が数値で構成されているかというNUMERICチェックが命令として用意されているのだが、Javaだと微妙なものしかない。ちょっと探してみたが、先頭が0のものは数値でないという判断をするJavaメソッドが多く、COBOLのNUMERICチェックとは挙動が異なる。
というわけで、簡単に書いてみた。
public class MyNumberUtil { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ System.out.println("123 is " + isNumeric("123")); System.out.println("0123 is " + isNumeric("0123")); } public static boolean isNumeric(String numStr) { if ("".equals(numStr)) { return false; } int strLen = numStr.length(); for (int i=0 ; i<strLen ; i++) { if (Character.isDigit(numStr.charAt(i)) ) { continue; } else { return false; } } return true; } }
なんか、予想以上に簡単だった。まぁ、小数点とか負の数とかは全力でfalseになるのだが、まぁ、そんなものは求めてない。