java - 检查java中的非字符串值

标签 java

我无法使用公共(public)方法检查非字符串值,例如 a-z 和 A-Z

Scanner input = new Scanner(System.in);
System.out.print("Enter your First Name: ");
String First_name = input.nextLine();


Scanner last = new Scanner(System.in);
System.out.print("Enter your Last Name: ");
String Last_name = last.nextLine();

这是公共(public)方法

public static boolean check_non_string_value (String First_name, String Last_name){
  // dont know how to check the input here
} 

最佳答案

您可以使用正则表达式,但自己循环遍历每个字符串并使用 Character.isLetter() 也相对简单检查每个字符:

for (char c : firstName.toCharArray()) {
    if (!Character.isLetter(c))
        return false;
}

for (char c : lastName.toCharArray()) {
    if (!Character.isLetter(c))
        return false;
}

return true;

请注意,我使用了更传统的名称:firstNamelastName。您应该始终尝试遵循 Java 的命名约定(即使用 camelCase )。您的方法名称也应该是 checkNonStringValue

使用正则表达式,你可以这样做:

private static final Pattern letters = Pattern.compile("\\p{Alpha}+");

...
    return letters.matcher(firstName).matches() &&
           letters.matcher(lastName).matches();

\p{Alpha} 是一个预定义的字符类,意思是 [a-zA-Z]。参见 Pattern了解更多详情。

关于java - 检查java中的非字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19273666/

相关文章:

Java 11 : Strange behaviour with Object. equals() 方法

java - 将 Freemarker 集成到 Spring mvc 时出错

java - 使用 jdbctemplate/jdbc for Hana db 获取按序列生成的主键

Java、HashMaps 和使用字符串作为键 - 字符串值是否存储了两次?

java - 将前 3 个字符的字符串与每个字符串前 3 个字符的字符串列表进行比较

java - 内部类中对象的 PriorityQueue - 找不到构造函数

java - 如何在不损失 Java 精度的情况下将 String 转换为 Double?

java - JSF Currency 在数据库中映射为 NUMBER

java - Activity 结束后 x 秒后发送广播

java - 俄罗斯方 block 游戏 - 独立于计时器的快速左右移动