Из документации Java : "Сканер разбивает свои входные данные на токены, используя шаблон разделителя , который по умолчанию соответствует пробелу ."
Без каких-либо дополнительных слоев, с которыми вы работаете scanner.hasNext(Pattern.quote("{"))
. Если у вас есть еще new Scanner(someText);
, то это поведение. Я должен заменить "{" на "x", иначе у меня возникнут проблемы с проверкой уценки здесь:
someText hasNext(Pattern.quote("x"))
"x" y
"xx" n
"x " y
"x x" y
@Test
public void testScan(){
assertEquals(Collections.emptyList(), scanLBrace("x"));
assertEquals(Collections.emptyList(), scanLBrace("{{"));
assertEquals(Arrays.asList("{"), scanLBrace("{"));
assertEquals(Arrays.asList("{", "{"), scanLBrace("{ {"));
}
List<String> scanLBrace(String text){
List<String> result = new ArrayList<>();
Scanner s = new Scanner(text);
while (s.hasNext(Pattern.quote("{")))
{
result.add(s.next());
}
return result;
}