String.contains总是显示为false

DJO*_*wen 0 java string contains

public final void nameErrorLoop () {
    while (error) {
        System.out.println("Enter the employee's name.");
        setName(kb.next()); 
        if (name.contains("[A-Za-z]")) {
            error = false; 
        }
        else {
            System.out.println("The name can only contain letters.");
        }
    }
    error = true; 
}
Run Code Online (Sandbox Code Playgroud)

尽管在不同的方法中使用了类似的设置,但此方法仍然陷入常量循环,因为if语句始终为false.我已经尝试过.matches(),迄今为止我在Interent上找到的任何内容都没有帮助.有什么想法吗?感谢您的帮助.

编辑:我刚刚注意到,当我完成项目时,试图打印'name'以后只显示名字,而最后一个名字从未打印过.有什么办法可以让'name'字符串包括在内吗?

Jon*_*eet 10

String.contains 不使用正则表达式 - 它只是检查一个字符串是否包含另一个字符串,就像"foobar"包含"oob"一样.

听起来你想要检查name 包含字母,在这种情况下你应该检查如下:

if (name.matches("^[A-Za-z]+$"))
Run Code Online (Sandbox Code Playgroud)

+(而不是*),将检查它的非空; 在^$会检查是否有什么比字母等.

但是,如果您希望它是全名,您可能希望允许空格,连字符和撇号:

if (name.matches("^[-' A-Za-z]+$"))
Run Code Online (Sandbox Code Playgroud)

还要考虑重音字符 - 以及其他语言的标点符号.