如果我有字符串“hello8459”和“1234”,我将如何检测哪个字符串中包含字母字符?我一直在努力:
//Checking for numerics in an if...
Pattern.matches("0-9", string1);
然而它根本不起作用。任何人都可以建议吗?
答案 0 :(得分:6)
一方面,你问的是如何检测字母字符,但你的代码似乎试图检测数字。
对于数字:
[0-9]
字母:
[a-zA-Z]
答案 1 :(得分:5)
“0-9”只匹配,字符串:“0-9”。 您可能要做的是“[0-9] +”,它匹配一个或多个数字。
你可以使用String的匹配(...)方法:
boolean onlyDigits = "1234578".matches("\\d+");
在检查'onlyDigits'后解析为原始 int 或 long 时要小心:它可能是一个很大的数字,如123145465124657897456421345487454,它不适合原始数据类型但通过匹配(...)测试!
答案 2 :(得分:2)
在Ruby中,String类中的方法名为“string”.is_alphabet?这告诉我们,如果字符串只包含字母字符。 但遗憾的是在java中没有方法来检查字符串中是否只包含字母字符,但不用担心你可以做类似的事情
boolean isAlphabet = "1234".matches("[a-zA-Z]+") which'll returns false
boolean isAlphabet = "hello".matches("[a-zA-Z]+") which'll return true cause it contains only alphabet.
答案 3 :(得分:1)
这是一个替代方案,根本不涉及正则表达式:
try {
Integer.parseInt( input );
// Input is numeric
}
catch( Exception ) {
// Input is not numeric
}
答案 4 :(得分:1)
你不想检查是否有任何数字,你想检查是否有任何不是数字的东西(或者至少是你的问题所说的,也许不是你的意思)。所以你想要否定你的角色类并搜索任何不是数字的东西,而不是试图找到任何数字。当然还有空字符串。在代码中:
boolean isNumeric = !(str.matches("[^0-9]") || "".equals(str));
答案 5 :(得分:1)
检查字符串中所有字符的方法是将其转换为字符数组:
char[] check = yourstring.toCharArray();
然后创建一个for循环,分别检查所有字符:
for(int i=0; i < check.length; i++){
if(!Character.isDigit(check[i])){
System.out.println("Not numberal");
}
}