StringUtils.isNumericは、 ""の場合はtrue、7.8の場合はfalseを返します。これはもちろん文書化された動作ですが、実際には私にとって最も便利ではありません。 isActuallyNumericを提供する何か他のもの(理想的にはcommons.lang)はありますか?
_org.Apache.commons.lang.math.NumberUtils
_の isNumber(String)
を試してください。
文字列が有効であるかどうかをチェックしますJava数値。
有効な数値には、0x修飾子でマークされた16進数、科学表記法、および型修飾子でマークされた数字(123Lなど)が含まれます。
Null
と空の文字列はfalse
を返します。
UPDATE-
isNumber(String)
は非推奨になりました。代わりに isCreatable(String)
を使用してください。
eav ご指摘ありがとうございます。
NumberUtils.isNumber は非推奨です。
あなたは使うべきです
NumberUtils.isCreatable
または
NumberUtils.isParsable
それらはすべて小数点値をサポートします:
false
を返します(例:09)。その値を取得したい場合は、 NumberUtils.createNumber を使用する必要があります。0~9
と小数点(.
)、その他の文字(スペースなど)はfalse
を返します。ところで、 StringUtils.isNumeric
の実装には、commons-langとcommons-lang3の間でいくつかの違いがあります。 commons-langでは、 StringUtils.isNumeric( "") はtrue
です。ただし、commons-lang3では、 StringUtils.isNumeric( "") はfalse
です。文書で詳細情報を取得できます。
これは正確にはcommons.lang
、しかしそれは動作します。
try {
double d = Double.parseDouble(string);
// string is a number
} catch (NumberFormatException e) {
// string is not a number
}
または、このような数字以外の文字と一致する文字があるかどうかを確認することもできます。
if(myStr.replaceAll("^$"," ").matches("[^\\d\\.]"))
を使用すると、0から9や以外のものが含まれていることがわかります。
これは同等のJavaScriptです(文字列を変更して実験します)...