[轉] Java:對Scanner的useDelimiter()方法的疑問
阿新 • • 發佈:2018-03-31
asc color 以及 mit 得到 gpo next ascii碼 from
【From】https://segmentfault.com/q/1010000003885362
-
Windows下,我們在鍵盤上按下
Enter
鍵,實際上輸入的是回車和換行兩個字符:\r\n
,ASCII碼分別是13和10
-
默認情況下,
Scanner
獲取到的輸入裏面是不包含回車換行的。比如你輸入____one_two\r\n
,它只會從____one_two
裏面獲取輸出(當然,可能要通過多次next()
來獲取),自動把回車換行過濾掉了 -
但是當我們強制以回車或換行為分隔符時,它就不會自動過濾回車換行符了。比如你以回車符
\n
為分隔符的話,輸入上面的內容會得到____one_two\r
,這也就是返回的length
\r
:
// 輸入`____one_two\r\n`來測試 Scanner scanner = new Scanner(System.in); scanner.useDelimiter("\n"); String str = scanner.next(); // 打印獲取到的內容和其長度,以及最後一個字符的ASCII碼 System.out.println(str + ":" + str.length() + " (" + str.codePointAt(str.length()-1) + ")");
解決方法:用\r\n
作為分隔符就正常了
[轉] Java:對Scanner的useDelimiter()方法的疑問