使用Java String .matches()

时间:2018-04-20 03:46:40

标签: java regex

用户将以下内容输入扫描仪:

  

" 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并且我已经尝试过了它确实返回了假。

1 个答案:

答案 0 :(得分:1)

使用方法public void onDataChange(DataSnapshot dataSnapshot) { UserList = new ArrayList<User>(); for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) { System.out.println(userSnapshot.getKey()); UserList.add(userSnapshot.getValue(User.class)); } } 时,它只扫描文件的一个字符。因此,next()会返回in.next()a\,然后\。使用s,您正在扫描整行,从而nextLine()。希望这有帮助!