Java で文字列が数字かどうかを調べる方法
Mohammad Irfan
2023年10月12日
- Java で文字列が数値かどうかを調べる
-
Java の
Character
クラスを使って文字列が数値であるかどうかを調べる -
Java の
Apache
ライブラリを使って文字列が数字かどうかを調べる -
Java の
Double
クラスを使って文字列が数値かどうかを調べる - 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()
メソッドを用いることができます。これは true
か false
のどちらかの値を返します。
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 a numerical string");
} catch (NumberFormatException e) {
System.out.println("It is not a numerical string");
}
}
}
出力:
It is a 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