Java で文字列が数字かどうかを調べる方法

  1. Java で文字列が数値かどうかを調べる
  2. Java の Character クラスを使って文字列が数値であるかどうかを調べる
  3. Java の Apache ライブラリを使って文字列が数字かどうかを調べる
  4. Java の Double クラスを使って文字列が数値かどうかを調べる
  5. Java 8 で文字列が数値かどうかを調べる

このチュートリアルでは、Java で文字列が数値であるかどうかをチェックする方法を紹介し、それを理解するためのコード例をいくつか挙げています。

数値文字列をチェックするには、正規表現を使う方法、Double クラス、Character クラス、Java 8 の関数的アプローチなど、いくつかの方法があります。

Java で文字列が数値かどうかを調べる

文字列は、数値(有効な数字)を含む場合にのみ数値である。例えば、"123"は有効な数値文字列であるが、"123a"はアルファベットを含むので有効な数値文字列ではない。

数値文字列をチェックするには、String クラスの matched() メソッドを利用します。これは regex を引数にとり、true または false のいずれかのブール値を返すものです。

public class SimpleTesting {

    public static void main(String[] args) {
        String str = "123";
        boolean isNumeric =  str.matches("[+-]?\\d*(\\.\\d+)?");
        System.out.println(isNumeric);
        str = "121xy";
        isNumeric =  str.matches("[+-]?\\d*(\\.\\d+)?");
        System.out.println(isNumeric);
        str = "0x234";
        isNumeric =  str.matches("[+-]?\\d*(\\.\\d+)?");
        System.out.println(isNumeric);
    }
}

出力:

true
false
false

Java の Character クラスを使って文字列が数値であるかどうかを調べる

ループ内の各文字を調べるには、Character クラスの isDigit() メソッドを用いることができる。これは truefalse のどちらかの値を返す。

public class SimpleTesting {

    public static void main(String[] args) {
        String str = "1123";
        boolean isNumeric = true;
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isDigit(str.charAt(i))) {
                isNumeric = false;
            }
        }
        System.out.println(isNumeric);
    }
}

出力:

true

Java の Apache ライブラリを使って文字列が数字かどうかを調べる

Apache を使用している場合は、StringUtils クラスの isNumeric() メソッドを使用することができます。

import org.apache.commons.lang3.StringUtils;

public class SimpleTesting {

    public static void main(String[] args) {
        String str = "1123";
        boolean isNumeric = StringUtils.isNumeric(str);
        System.out.println(isNumeric);
        str = "123xyz";
        isNumeric = StringUtils.isNumeric(str);
        System.out.println(isNumeric);
    }
}

出力:

true
false

Java の Double クラスを使って文字列が数値かどうかを調べる

文字列を double に変換して double 型の値を返す Double クラスの parseDouble() メソッドを利用することができます。解析できなかった場合は例外をスローします。

public class SimpleTesting {

    public static void main(String[] args) {
        String str = "1123";
        try {
        Double.parseDouble(str);
        System.out.println("It is numerical string");
        }catch(NumberFormatException e) {
            System.out.println("It is not numerical string");
        }
    }
}

出力:

It is not numerical string

Java 8 で文字列が数値かどうかを調べる

Java 8 以上のバージョンを使っている場合は、この例を使って数値文字列を調べることができる。ここでは、Character クラスの isDigit() メソッドを allMatch() にメソッド参照として渡している。

public class SimpleTesting {

    public static void main(String[] args) {
        String str = "1123";
        boolean isNumeric = str.chars().allMatch( Character::isDigit );
        System.out.println(isNumeric);
        str = "ab234";
        isNumeric = str.chars().allMatch( Character::isDigit );
        System.out.println(isNumeric);
    }
}

出力:

true
false

関連記事 - Java String

  • Java で文字を文字列に変換する方法
  • Java で文字列から文字列配列への変換を実行する方法
  • comments powered by Disqus