Класс Scanner в Java предоставляет метод useDelimiter, позволяющий указать разделитель (символ или шаблон), который разделяет жетоны. Однако использование разделителей может сбить с толку новичков. Давайте разберем это более простыми словами.
Рассмотрим фрагмент:
sc = new Scanner(new File(dataFile)); sc.useDelimiter(",|\r\n");
В этом примере разделитель определяется как комбинация запятой (",") и возврата каретки, за которой следует символ новой строки ("\ р\н"). Сканер будет использовать этот разделитель для разделения токенов в файле данных.
Разделитель, который вы указываете в useDelimiter, является регулярным выражением. Регулярные выражения — это шаблоны, используемые для сопоставления символов или последовательностей. Разделитель ",|\r\n" указывает, что токен заканчивается запятой или возвратом каретки, за которым следует новая строка.
Давайте рассмотрим пример:
String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); System.out.println(s.nextInt()); // prints: 1 System.out.println(s.nextInt()); // prints: 2 System.out.println(s.next()); // prints: red System.out.println(s.next()); // prints: blue s.close();
В этом примере разделителем является "\sfish\s." \\s* указывает, что до или после слова «рыба» может быть любое количество пробелов (включая ноль). Это означает, что сканер будет сопоставлять и извлекать токены, такие как «1 рыба», «2 рыбы» и т. д.
Помните, что при использовании useDelimiter в Java важно понимать регулярные выражения. В Интернете можно найти подробные руководства, которые помогут расширить ваши знания о шаблонах регулярных выражений. При правильном понимании разделителей и регулярных выражений вы сможете эффективно анализировать и извлекать данные из текстовых файлов с помощью класса Scanner.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3