繁体   English   中英

Java - 扫描仪不读取带空格的字符串(已解决)

[英]Java - Scanner doesn't read string with space (Solved)

我试图允许只用字符 a-zA-Z 进行的输入并且还有空间。 示例: “查克·诺里斯”。 下面的代码发生的情况是扫描仪input.next()不允许提到的示例输入字符串。

我期待这个输出: Success! 但这是实际输出: Again:

try {
    String input_nome = input.next();            // Source of the problem

    if (input_nome.matches("[a-zA-Z ]+")) {
        System.out.print("Success!");
        break;
    } else {
        System.err.print("Again: ");
    }
} catch (Exception e) {
    e.printStackTrace();
}

解决方案

问题的根源在于使用的扫描仪方法。

String input_nome = input.next();            // Incorrect scanner method
String input_nome = input.nextLine();        // Correct scanner method

说明: https : //stackoverflow.com/a/22458766/11860800

String t = "查克诺里斯";

t.matches("[a-zA-Z]+")

实际上是否返回true。 检查您的输入是否确实是“Chuck Norris”,并确保该空格不是一些奇怪的字符。 此外,您可以使用 \\s 代替空格。 我也推荐 101regex.com

请参阅此链接: Java 正则表达式验证全名只允许空格和字母

您可以使用以下正则表达式

String regx = "^[\\p{L} .'-]+$";

这应该适用于所有场景和 unicode。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM