簡體   English   中英

Java String .matches()的奇怪輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM