Java: шаблон, пример сканера не работает - PullRequest
2 голосов
/ 01 октября 2010

Мне любопытно, почему этот шаблон не работает.

String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.hasNext(same));

возвращается:

false

Ответы [ 2 ]

5 голосов
/ 01 октября 2010

Разделителем сканера по умолчанию является пробел. Метод hasNext (...) позаботится о разделителе и, таким образом, разделит строку на пробелы и сначала проверит против ====, как сказал kuropengin.

Тем не менее кажется, что в вашем коде есть опечатка, так как вы вообще не используете определенный шаблон. Ваш код, вероятно, должен читать:

String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.hasNext(title4));

Но вы ищете метод findInLine (...) . Он будет игнорировать разделитель при поиске совпадений. Следующий код

String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.findInLine(title4));

вернет:

==== Instructions ====
2 голосов
/ 01 октября 2010

Java java.util.Scanner разбивает свой ввод на основе некоторого разделителя. По умолчанию шаблон разделителя соответствует пробелу, поэтому ваш ввод в сканер не останется неизменным, и вы получите "====", "Инструкции", "====" со сканера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...