StringUtils.isNumeric は、"" に対して true を返し、7.8 に対して false を返します。もちろん、これは文書化された動作ですが、実際には私にとって最も便利ではありません。isActuallyNumeric を提供する他のもの (理想的には commons.lang 内) はありますか?
4 に答える
isNumber(String)
からお試しくださいorg.apache.commons.lang.math.NumberUtils
。
文字列が有効なJava番号であるかどうかを確認します。
有効な数値には、0x修飾子でマークされた16進数、科学的記数法、および型修飾子(123Lなど)でマークされた数値が含まれます。
Null
空の文字列はを返しfalse
ます。
アップデート -
isNumber(String)
現在は非推奨です。isCreatable(String)
代わりに使用してください。
それを指摘してくれてありがとうeav 。
NumberUtils.isNumberは廃止されました。
あなたが使用する必要があります
NumberUtils.isCreatable
また
NumberUtils.isParsable
それらはすべて小数点値をサポートしています。
- NumberUtils.isCreatableは、16 進数、8 進数、科学表記法、および型修飾子(123L など)でマークされた数値をサポートします。無効な 8 進値が返されます
false
(例: 09)。その値を取得したい場合は、NumberUtils.createNumberを使用する必要があります。 - NumberUtils.isParsableのみがサポート
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に相当するものです(実験するために文字列を変更してください)...