检查String是否为数字而不将其转换为数字

时间:2012-02-22 22:12:49

标签: java

我正在尝试检查字符串是否为“0”,“1”,“2”,...,“9”而不将字符串转换为数字。有什么建议?现在我正在为每个人做一个.equals(),这很难看。

7 个答案:

答案 0 :(得分:7)

怎么样:

if (text.length() == 1 && text.charAt(0) >= '0' && text.charAt(0) <= '9')

或者使用您想要的每个值创建HashSet<String>,然后使用contains

答案 1 :(得分:5)

您可以使用regular expression来  做这个。模式\d应该有效,它意味着匹配一个数字。在Java中,您必须转义反斜杠,使其变为\\d

String str = "4";

str.matches("\\d"); // true

答案 2 :(得分:3)

借用Jon的方法并使用内置函数。

if (str.length() == 1 && Character.isDigit(str.charAt(0)))

答案 3 :(得分:3)

someString.length() == 1  &&  "0123456789".contains(someString)

答案 4 :(得分:2)

char ch = "4";
boolean answer = Character.isDigit(ch);

答案 5 :(得分:1)

您可以使用正则表达式:

if ("7".matches("^[0-9]$")) {
    ...
}

答案 6 :(得分:1)

如果您有兴趣,另一种解决方案:

import org.apache.commons.lang.math.NumberUtils;

String str = "6";

(str.length() == 1 && NumberUtils.isNumber(str)); // true