簡體   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