[英]Weird output with Java String .matches()
用戶將以下內容輸入掃描儀:
“ a”(字符“ a”后跟一個空格)
我了解為什么這樣做:
Scanner in = new Scanner(System.in);
System.out.println(in.nextLine().matches("a\\s"));
但是我不明白為什么這行不通:
Scanner in = new Scanner(System.in);
System.out.println(in.next().matches("a\\s"));
第一個代碼塊(頂部的代碼)返回true
而第二個代碼塊(底部)返回false
兩者之間的唯一區別是一個是使用nextLine()
而另一個是next()
誰能解釋這種行為? 我知道最佳實踐決定了用戶Pattern和Matcher類,但這確實讓我感到困擾。
我也嘗試過("a(\\\\s)")
但是不幸的是,它給了我相同的結果。 我記得讀過.matches()
方法在輸入的開頭附加了一個^
,並在末尾附加了一個$
,但這仍然不應該使它返回false,我已經嘗試過了,但是確實返回了false。
當您使用next()
方法時,它將僅掃描文件的一個字符。 因此in.next()
將返回a
, \\
, \\
和s
。 通過使用nextLine()
您將掃描整行,從而掃描a\\\\s
。 希望這對您有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.