Java library to check whether a String contains a number *without* exceptions(用于检查字符串是否包含*无*异常的数字的 Java 库)
问题描述
如果传递的字符串是有效数字(例如123.55e-9"、-333,556"),我正在寻找一种返回布尔值的方法.我不想只想做:
I'm looking for a method that returns a boolean if the String it is passed is a valid number (e.g. "123.55e-9", "-333,556"). I don't want to just do:
public boolean isANumber(String s) {
try {
BigDecimal a = new BigDecimal(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
显然,该函数应该使用状态机 (DFA) 来解析字符串,以确保无效示例不会欺骗它(例如-21,22.22.2"、33-2").你知道是否存在这样的图书馆吗?我真的不想自己写它,因为这是一个显而易见的问题,我敢肯定我会重新发明轮子.
Clearly, the function should use a state machine (DFA) to parse the string to make sure invalid examples don't fool it (e.g. "-21,22.22.2", "33-2"). Do you know if any such library exists? I don't really want to write it myself as it's such an obvious problem that I'm sure I'd be re-inventing the wheel.
谢谢,
尼克
推荐答案
我会避免重新发明这种方法并使用 Apache Commons.如果您使用 Spring、Struts 或许多其他常用的 java 库,它们通常包含 Apache commons.您将需要 commons-lang.jar 文件.这是 NumberUtils 你想要的:
I would avoid re-inventing this method and go with Apache Commons. If your using Spring, Struts or many other commonly used java libraries, they often have Apache commons included. You will want the commons-lang.jar file. Here is the method in NumberUtils you would want:
isNumber[1]
public static boolean isNumber(java.lang.String str)
Checks whether the String a valid Java number.
Valid numbers include hexadecimal marked with the 0x qualifier, scientific notation and numbers marked with a type qualifier (e.g. 123L).
Null and empty String will return false.
Parameters:
str - the String to check
Returns:
true if the string is a correctly formatted number
这篇关于用于检查字符串是否包含*无*异常的数字的 Java 库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:用于检查字符串是否包含*无*异常的数字的 Java 库
基础教程推荐
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 降序排序:Java Map 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01