2017-03-25 93 views
0

我想在字符串上執行一個代碼塊如果是的話不是只包含整數。例如,如果輸入是,則什麼都不會發生;否則如果它是2017abc,代碼塊將被執行。檢查一個字符串是否不僅包含整數

我已經嘗試過正則表達式^[0-9]+$,但它好像if (!keyword.matches("/^[0-9]+$/")不工作,因爲我希望它。我檢查了多個在線資源,我很確定這個正則表達式是正確的。

我失去了一些東西在這裏?


更新:

解決使用keywords.replaceAll("\\d", "").length() > 0問題。但仍然不確定爲什麼上述不起作用。

無論如何,多虧了早些時候提出這個答案的人。 :)

+0

試試這個鏈接:http://stackoverflow.com/questions/10575624/java-string-see-if-a-string-contains-only-numbers-and-not-letters –

+0

匹配'\ D'會只匹配字符串中的非數字。 – ClasG

回答

0

正確的正則表達式可能是.*[^0-9].*。如果matches()返回true,則比您需要執行的操作爲真。

0

試試這個

import java.util.Scanner; 
    public class NotOnlyIntegers 
    { 
     public static void main(String[] args) 
     { 
      Scanner scan = new Scanner(System.in); 
      System.out.println("Please enter the String"); 
      String test=scan.nextLine(); 

      int digit=0; 
      int letter=0; 
      for(int x=0;x<test.length()-1;++x) 
      { 
       if(Character.isDigit(test.charAt(x))) 
       { 
        ++digit; 
       } 
       else if(Character.isLetter(test.charAt(x))) 
       { 
        ++letter; 
       } 
      } 
      if(digit>0&&letter>0) 
      { 
       System.out.println("Code Executed"); 
      } 
      else 
      System.out.println("Code Not Executed"); 
     } 

    } 
0

它不漂亮,但爲什麼不讓的Java做的工作:

private boolean isInteger(String o){ 
    try{ 
     Integer.valueOf(o); 
     return true; 
    }catch(NumberFormatException ex){ 
     return false; 
    } 

} 
+0

我的if語句已經在try-catch塊中,所以我想避免使用這個 – hopeweaver

+0

拋出和捕獲異常是有代價的。 http://stackoverflow.com/questions/36343209/which-part-of-throwing-an-exception-is-expensive – LppEdd

1

您在更新中規定的解決辦法看起來不錯。不過,我會試着解決你對初始代碼不起作用的好奇心。

我測試了您的問題聲明中給出的正則表達式:

^[0-9] + $

而且這似乎爲我工作的罰款。根據我的快速研究,問題可能出現在您後面提到的問題中的java代碼中。不需要在開始和結束時使用斜槓。

替換此

if (!keyword.matches("/^[0-9]+$/") 

與此

if (!keyword.matches("^[0-9]+$") 

,你是好去。很高興知道我是否錯過了一些東西。

有關正則表達式和模式的廣泛知識,我推薦下面的鏈接。

http://www.vogella.com/tutorials/JavaRegularExpressions/article.html#regular-expressions

好運。

相關問題