验证字符串格式(模式)输入

时间:2014-10-27 23:00:07

标签: java string format

我试图弄清楚如何验证用户输入。我希望用户输入 像a1或B6这样的东西。输入应该是以下模式。从a到h的信后跟一个 数字从1到8,[字符串数字]。如果不是资本,也应该接受这封信。这是我的代码。非常感谢任何帮助!

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;

2 个答案:

答案 0 :(得分:2)

您可以使用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]匹配大写或小写字母ah
  • [1-8]匹配1 <= number <= 8
  • 的数字

答案 1 :(得分:0)

您可以先将输入拆分为字符数组。您现在可以使用charArray.length检查其输入的长度。在此之后,您可以使用if和else语句和&lt;来检查数组中的两个字符是否在您所需的字符之间。和&gt;这里的比较是一个简单的例子:( Character.toLowerCase(char)表示如果用户输入大写或小写字母无关紧要)

    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;
    }