很少有Java示例向您展示如何检查String是否为数字。
1. Character.isDigit()
将String转换为char
数组,并使用Character.isDigit()
检查它
NumericExample.java
package com.mkyong;
public class NumericExample {
public static void main(String[] args) {
System.out.println(isNumeric("")); // false
System.out.println(isNumeric(" ")); // false
System.out.println(isNumeric(null)); // false
System.out.println(isNumeric("1,200")); // false
System.out.println(isNumeric("1")); // true
System.out.println(isNumeric("200")); // true
System.out.println(isNumeric("3000.00")); // false
}
public static boolean isNumeric(final String str) {
// null or empty
if (str == null || str.length() == 0) {
return false;
}
for (char c : str.toCharArray()) {
if (!Character.isDigit(c)) {
return false;
}
}
return true;
}
}
输出量
false
false
false
false
true
true
false
2. Java 8
现在,这要简单得多。
public static boolean isNumeric(final String str) {
// null or empty
if (str == null || str.length() == 0) {
return false;
}
return str.chars().allMatch(Character::isDigit);
}
3. Apache Commons Lang
如果claspath中存在Apache Commons Lang,请尝试NumberUtils.isDigits()
pom.xml
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
import org.apache.commons.lang3.math.NumberUtils;
public static boolean isNumeric(final String str) {
return NumberUtils.isDigits(str);
}
4. NumberFormatException
此解决方案正在工作,但不建议您解决性能问题。
public static boolean isNumeric(final String str) {
if (str == null || str.length() == 0) {
return false;
}
try {
Integer.parseInt(str);
return true;
} catch (NumberFormatException e) {
return false;
}
}
参考文献
翻译自: https://mkyong.com/java/java-how-to-check-if-a-string-is-numeric/