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