2009-09-25 268 views
2

如果我有字符串「hello8459」和「1234」,我該如何去檢測哪一個字母字符?我一直在嘗試:字母字符檢查字符串

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

但是它根本不起作用。任何人都可以建議嗎?

+0

我想你的意思是你要嘗試檢測其中一個沒有按」有數字? – Dov 2009-09-25 12:55:56

回答

5

「0-9」與此匹配,字符串:「0-9」。 你可能打算做的是「[0-9] +」,它匹配一個或多個數字。

你也可以使用字符串的比賽(...)方法:

boolean onlyDigits = "1234578".matches("\\d+"); 

不過要小心,檢查「onlyDigits」之後解析到原始INT時:這可能是一個像123145465124657897456421345487454這樣的大數字不適合原始數據類型,但會通過匹配(...)測試!

+0

乾杯,男人。我需要寫我自己的博客關於這種東西。它總是這樣一個簡單的答案,但你必須廣泛搜索!願上帝保佑Stackoverflow。再次感謝。 – Federer 2009-09-25 09:19:26

+0

@myusername:不客氣! – 2009-09-25 13:16:44

6

一方面你問如何檢測字母字符,但你的代碼似乎試圖檢測數字。

對於數學運算:

[0-9] 

對於字母:

[a-zA-Z] 
1

這裏是一個另類,不涉及正則表達式的所有:

try { 
    Integer.parseInt(input); 
    // Input is numeric 
} 
catch(Exception) { 
    // Input is not numeric 
} 
+0

我試過這個但是它不是很優雅嗎?我不想故意拋出異常......但我很高興我們都這樣想! – Federer 2009-09-25 09:20:59

+0

你可能有權避免它。這也被稱爲「展望處理」,很多人都會皺眉。 – Fragsworth 2009-09-25 09:31:21

+0

是的,你是對的。如果可能的話,最好避免例外情況。 (在C#中有一個TryParse,這使得這更容易。)也許這也可以幫助你[http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/數學/ NumberUtils.html] – oddparity 2013-08-17 19:21:14

1

你不想檢查是否有任何數字,你想檢查是否有任何不是一個數字(或至少這是你的曲線estion說,也許不是你的意思)。所以你想要否定你的角色類並搜索任何不是數字的東西,而不是試圖找到任何一個數字。當然也有空串。在代碼:

boolean isNumeric = !(str.matches("[^0-9]") || "".equals(str)); 
1

檢查所有字符的字符串的方法是把它變成一個字符數組:

char[] check = yourstring.toCharArray(); 

然後做一個for循環,檢查所有的字符單獨的:

for(int i=0; i < check.length; i++){ 
    if(!Character.isDigit(check[i])){ 
     System.out.println("Not numberal"); 
     } 
    } 
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.