1. ホーム

[解決済み】JavaでStringが整数を表すかどうかを確認する最良の方法は何ですか?

2022-04-02 07:05:49

質問

私は通常、以下のイディオムを使って、Stringが整数に変換できるかどうかをチェックしています。

public boolean isInteger( String input ) {
    try {
        Integer.parseInt( input );
        return true;
    }
    catch( Exception e ) {
        return false;
    }
}

ちょっとハチャメチャな気がするのは私だけでしょうか? もっといい方法はないでしょうか?


私の回答(ベンチマーク付き、ベースは 先の回答 によって コーディングウィズスパイク を受け入れることにした理由をご覧ください。 Jonas Klemmingの回答 という問題です。 このオリジナルのコードは、実装が早く、保守性も高いので、多くの人に使われると思いますが、非整数のデータが提供されると、桁違いに遅くなります。

解決方法は?

オーバーフローの可能性を気にしないのであれば、この関数は Integer.parseInt() .

public static boolean isInteger(String str) {
    if (str == null) {
        return false;
    }
    int length = str.length();
    if (length == 0) {
        return false;
    }
    int i = 0;
    if (str.charAt(0) == '-') {
        if (length == 1) {
            return false;
        }
        i = 1;
    }
    for (; i < length; i++) {
        char c = str.charAt(i);
        if (c < '0' || c > '9') {
            return false;
        }
    }
    return true;
}