2014-10-27 55 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; 
    }