はじめに
Java では、文字列は頻繁に使用されるデータ型であり、さまざまなタスクに使用できます。テキストフィールドやテキストエリアからの入力を格納するためによく使用されます。これらのソースからの入力が有効な数値データであるかどうかを判断することが重要です。この実験では、Java で文字列が有効な数値であるかどうかを確認するさまざまな方法を学びます。
解析メソッドを使用して数値文字列をチェックする
Java で文字列が数値かどうかを判断する最も簡単で最良の方法は、解析です。Java は、Integer.parseInt(String number)、Double.parseDouble(String number)、Float.parseFloat(String number)、Long.parseLong(String number) など、さまざまな組み込みの解析メソッドを提供しており、それぞれが対応する数値データ型のコンバータとして機能します。
public static boolean isStringNumeric(String number) {
boolean isNumeric;
if(number == null) {
isNumeric = false;
} else {
try {
Double num = Double.parseDouble(number);
isNumeric = true;
} catch(NumberFormatException e) {
isNumeric = false;
}
}
return isNumeric;
}
public static void main(String[] args) {
String num1 = "1001";
String num2 = "-101";
String num3 = "1a10";
String num4 = null;
System.out.println("String " + num1 + " is numeric: " + isStringNumeric(num1));
System.out.println("String " + num2 + " is numeric: " + isStringNumeric(num2));
System.out.println("String " + num3 + " is numeric: " + isStringNumeric(num3));
System.out.println("String " + num4 + " is numeric: " + isStringNumeric(num4));
}
コードを実行するには:
- コードを NumericStringParser.java という名前のファイルに保存します。
- ターミナルを開き、ファイルが含まれるディレクトリに移動します。
javac NumericStringParser.javaを使用してコードをコンパイルします。java NumericStringParserを使用してコードを実行します。
正規表現を使用して数値文字列をチェックする
正規表現を使って文字列を照合し、それが数値かどうかを判断することができます。文字列の matches() メソッドを使って、文字列の数値を正規表現と比較します。文字列を照合するには、正規表現「-?\d+(\.\d+)?」を使用します。ここで、-?は数値が負であるかどうかを表し、\d+ は文字列内の 1 桁以上の数字を検索し、(\.\d+)?は少数を照合するために使用されます。ここで、\.は小数点を検索し、\d+ は小数点の後ろの 1 桁以上の数字を探します。
public static boolean isStringNumeric(String number) {
boolean isNumeric;
String regex = "-?\\d+(\\.\\d+)?";
if(number == null) {
isNumeric = false;
} else if(number.matches(regex)) {
isNumeric = true;
} else {
isNumeric = false;
}
return isNumeric;
}
public static void main(String[] args) {
String num1 = "1001";
String num2 = "-101";
String num3 = "1a10";
String num4 = null;
System.out.println("String " + num1 + " is numeric: " + isStringNumeric(num1));
System.out.println("String " + num2 + " is numeric: " + isStringNumeric(num2));
System.out.println("String " + num3 + " is numeric: " + isStringNumeric(num3));
System.out.println("String " + num4 + " is numeric: " + isStringNumeric(num4));
}
コードを実行するには:
- コードを NumericStringRegex.java という名前のファイルに保存します。
- ターミナルを開き、ファイルが含まれるディレクトリに移動します。
javac NumericStringRegex.javaを使用してコードをコンパイルします。java NumericStringRegexを使用してコードを実行します。
Apache Commons ライブラリを使用する
Apache Commons ライブラリは、文字列が数値かどうかをチェックするためのいくつかのメソッドを提供しています。
NumberUtils.isCreatable() メソッド
isCreatable() メソッドは、文字列が数値かどうかをチェックするための簡単で便利なメソッドです。0x または oX で始まる 16 進数の数値文字列、0 で始まる 8 進数、e 文字を使用する科学記数法も受け付け、型修飾子が付いた数値も受け付けます。
import org.apache.commons.lang3.math.NumberUtils;
public static void main(String[] args) {
String num1 = "a10c";
String num2 = "-104";
String num3 = "100";
String num4 = "0xA10";
System.out.println("String " + num1 + " is numeric: " + NumberUtils.isCreatable(num1));
System.out.println("String " + num2 + " is numeric: " + NumberUtils.isCreatable(num2));
System.out.println("String " + num3 + " is numeric: " + NumberUtils.isCreatable(num3));
System.out.println("String " + num4 + " is numeric: " + NumberUtils.isCreatable(num4));
}
NumberUtils.isParsable() メソッド
isParsable() メソッドは、文字列が解析可能かどうかをチェックするために使用されます。isCreatable() メソッドと同じように、16 進数や科学記数法には対応しません。
import org.apache.commons.lang3.math.NumberUtils;
public static void main(String[] args) {
String num1 = "a10c";
String num2 = "-104";
String num3 = "100";
String num4 = "0xA10";
System.out.println("String " + num1 + " is numeric: " + NumberUtils.isParsable(num1));
System.out.println("String " + num2 + " is numeric: " + NumberUtils.isParsable(num2));
System.out.println("String " + num3 + " is numeric: " + NumberUtils.isParsable(num3));
System.out.println("String " + num4 + " is numeric: " + NumberUtils.isParsable(num4));
}
StringUtils.isNumeric() メソッド
isNumeric() メソッドは、Unicode の数字をチェックし、数値文字列が負の数を表す場合や小数点を含む場合には false を返します。このメソッドは、正の整数のみをチェックする場合にのみ考慮すべきです。
import org.apache.commons.lang3.StringUtils;
public static void main(String[] args) {
String num1 = "a10c";
String num2 = "-104";
String num3 = "100";
String num4 = "0.11";
System.out.println("String " + num1 + " is numeric: " + StringUtils.isNumeric(num1));
System.out.println("String " + num2 + " is numeric: " + StringUtils.isNumeric(num2));
System.out.println("String " + num3 + " is numeric: " + StringUtils.isNumeric(num3));
System.out.println("String " + num4 + " is numeric: " + StringUtils.isNumeric(num4));
}
StringUtils.isNumericSpace() メソッド
isNumericSpace() メソッドは、空白もチェックします。文字列が"19 8"のようなタイプの場合、このメソッドは true を返します。文字列が空白のみで構成されている場合も true を返します。
import org.apache.commons.lang3.StringUtils;
public static void main(String[] args) {
String num1 = "a10c";
String num2 = " ";
String num3 = "100";
String num4 = "0.11";
System.out.println("String " + num1 + " is numeric: " + StringUtils.isNumeric(num1));
System.out.println("String " + num2 + " is numeric: " + StringUtils.isNumeric(num2));
System.out.println("String " + num3 + " is numeric: " + StringUtils.isNumeric(num3));
System.out.println("String " + num4 + " is numeric: " + StringUtils.isNumeric(num4));
}
まとめ
この実験では、Java で文字列が数値かどうかをチェックするための複数の方法とその使い方を学びました。Java で文字列が数値かどうかをチェックするために、組み込みの解析メソッド、正規表現、および Apache Commons ライブラリを使用しました。



