检查字符串中的字母字符

时间:2009-09-25 09:09:45

标签: java regex

如果我有字符串“hello8459”和“1234”,我将如何检测哪个字符串中包含字母字符?我一直在努力:

//Checking for numerics in an if...
Pattern.matches("0-9", string1);

然而它根本不起作用。任何人都可以建议吗?

6 个答案:

答案 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");
        }
    }