2014-10-27 92 views
0

我試着去弄清楚如何驗證用戶input.I希望用戶輸入 像A1或B6.The輸入應在以下模式。從一個字母到h後跟一個 從1數到8,串號]。也信宜被接受或者如果是資本要麼not.Here是我code.Any幫助是非常感謝!驗證字符串格式(模式)輸入

private void getUserInput() { 
    Scanner scan = new Scanner(System.in); 

    userGuess1 = scan.nextLine(); 
    // Here i should validate if the input is in the right format 
    userGuess = userGuess1; 

回答

0

您可以使用String方法matches(String regex)方法。

userGuess1 = scan.nextLine(); 
if(userGuess1.matches("[a-hA-H][1-8]")) { 
    // valid 
} else { 
    // invalid 
} 

這個結果如下:

A1 - valid 
H9 - invalid 
a2 - valid 
h3 - valid 

i8 - invalid 
zk - invalid 


正則表達式擊穿!

  • 中間括號內的事物定義了一組事物,並結合-短劃線可以定義一個範圍。
  • [a-hA-H]通過h
  • [1-8]大寫或小寫字母a匹配匹配一個數字,是1 <= number <= 8
+0

謝謝你的時間和解釋this.Hope它也幫助其他同樣的問題! – Kisos 2014-10-27 23:20:47

0

可以首先將所輸入分成字符數組。您現在可以使用charArray.length檢查其輸入的長度。在此之後,你可以檢查數組中的兩個人物是你需要的字符之間使用if和else語句和<和>這裏比較是一個簡單的例子:(該Character.toLowerCase(炭),意味着它不如果用戶關係輸入大寫或小寫字母)

Scanner scan = new Scanner(System.in); 
    String input = scan.next(); 
    char[] charArray = input.toCharArray(); 

    boolean validated = true; 

    if(charArray.length != 2){ 
     validated = false; 
    } 

    if(charArray[1] > '8' || charArray[1] < '1'){ 
     validated = false; 
    } 

    if(Character.toLowerCase(charArray[0]) > 'h' || Character.toLowerCase(charArray[0]) < 'a'){ 
     validated = false; 
    }