检查输入是否是一个字母(Java)

时间:2016-01-18 12:40:49

标签: java

在我的程序中,我得到一个用户输入(String):

例如:

String input = in.nextline();

我想检查(使用if-function)用户/字符串是否包含以下内容:

  • 包含一个字母(a-z / A-Z)
  • 只包含一个字母(A有效,AA / AB / LWA无效)

那么x / x2会发生什么?

if(input.equals(x) && input.equals(x2){
    //...
} 

3 个答案:

答案 0 :(得分:2)

一个不涉及正则表达式的解决方案(因此,可以更容易理解)只是:

  • 使用String.length()检查字符串的长度是否为1。
  • 使用String.charAt(index)检查第一个字符是'a''z'之间还是'A''Z'之间,并对ASCII值进行整数比较那些角色。通过降低字符的大小并检查它是否仅在'a''z'之间,也可以简化这一过程。

示例代码为:

private static boolean isValid(String str) {
    if (str.length() != 1) return false;
    char c = Character.toLowerCase(str.charAt(0));
    return c >= 'a' && c <= 'z';
}

你会像

一样使用它
String input = in.nextline();
if (isValid(input)) {
    // do something wonderful
}

答案 1 :(得分:1)

您可以使用简单的正则表达式:

String input = in.nextline():
if (input.matches("[A-Za-z]{1}")) {
    //valid input
}
else {
    //invalid input
}

答案 2 :(得分:0)

使用regex应该做的工作:

    Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();

    if (input.matches("[A-z]")) {
        System.out.println("Valid input");
    } 
    else {
        System.out.println("Wrong input");
    }