Класс Scanner
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable,Iterator<String>
public final class Scanner extends Object implements Iterator<String>, Closeable
Сканер разбивает входные данные на токены с использованием шаблона разделителя, который по умолчанию соответствует пробелам. Результирующие токены затем могут быть преобразованы в значения различных типов с помощью различных методов сканера.
Например, этот код позволяет пользователю считать число из консоли.
var con = System.console();
if (con != null) {
Scanner sc = new Scanner(con.reader());
int i = sc.nextInt();
}
В качестве другого примера, этот код позволяет назначить типы из записей в файле:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}
Сканер также может использовать разделители, отличные от пробелов. Этот пример считывает несколько элементов из строки:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
печатает следующий вывод:
1 2 red blue
Тот же вывод можно получить с помощью этого кода, который использует регулярное выражение для анализа всех четырёх токенов сразу:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close();
По умолчанию используемый сканером разделитель пробелов определяется как разделитель пробелов по умолчанию в соответствии с Character.isWhitespace(). Метод reset() сбросит значение разделителя сканера на значение по умолчанию, независимо от того, было ли оно ранее изменено.
Операция сканирования может заблокироваться, ожидая ввода.
Методы next() и hasNext() и их аналоги (такие как nextInt() и hasNextInt()) сначала пропускают любой ввод, соответствующий шаблону разделителя, а затем пытаются вернуть следующий токен. Оба метода могут заблокироваться, ожидая дальнейшего ввода. Блокируется ли метод сканирования, никак не зависит от того, будет ли заблокирован его соответствующий метод проверки. Метод tokens() также может заблокироваться, ожидая ввода.
Методы findInLine(), findWithinHorizon(), skip() и findAll() работают независимо от шаблона разделителя. Эти методы будут пытаться сопоставить указанный шаблон без учета разделителей во вводе и, таким образом, могут быть использованы в особых случаях, когда разделители не важны. Эти методы могут заблокироваться, ожидая большего ввода.
Когда сканер выбрасывает исключение InputMismatchException, сканер не пропускает токен, вызвавший исключение, поэтому его можно получить или пропустить с помощью другого метода.
В зависимости от типа шаблона разделителя могут возвращаться пустые токены. Например, шаблон "\\s+" не вернет пустых токенов, так как он соответствует нескольким экземплярам разделителя. Шаблон разделителя "\\s" может возвращать пустые токены, так как он пропускает только один пробел за раз.
Сканер может читать текст из любого объекта, реализующего интерфейс Readable. Если вызов метода read() базового объекта readable генерирует исключение IOException, то сканер предполагает, что достигнут конец ввода. Последнее исключение IOException, сгенерированное базовым объектом readable, можно получить с помощью метода ioException().
При закрытии сканера он закроет источник ввода, если источник реализует интерфейс Closeable.
Сканер не предназначен для многопотоковой работы без внешней синхронизации.
Если не указано иное, передача параметра null в любой метод сканера вызовет исключение NullPointerException.
Сканер по умолчанию интерпретирует числа как десятичные, если не задано другое основание с помощью метода useRadix(int). Метод reset() сбросит значение основания сканера на 10, независимо от того, было ли оно изменено ранее.
Локализованные числа
Экземпляр этого класса может сканировать числа в стандартных форматах, а также в форматах локали сканера. Начальная локали сканера - это значение, возвращаемое методом Locale.getDefault(Locale.Category.FORMAT); она может быть изменена с помощью метода useLocale(). Метод reset() сбросит значение локали сканера на начальную локали, независимо от того, была ли она ранее изменена.
Локализованные форматы определяются параметрами, которые для конкретной локали берутся из объекта DecimalFormat этой локали, df, и его объекта DecimalFormatSymbols, dfs.
- Разделитель группировки локали
- Символ, используемый для разделения тысяч, т.е.,
dfs.getGroupingSeparator()- Десятичный разделитель локали
- Символ, используемый для десятичной точки, т.е.,
dfs.getDecimalSeparator()- Положительный префикс локали
- Строка, которая появляется перед положительным числом (может быть пустой), т.е.,
df.getPositivePrefix()- Положительный суффикс локали
- Строка, которая появляется после положительного числа (может быть пустой), т.е.,
df.getPositiveSuffix()- Отрицательный префикс локали
- Строка, которая появляется перед отрицательным числом (может быть пустой), т.е.,
df.getNegativePrefix()- Отрицательный суффикс локали
- Строка, которая появляется после отрицательного числа (может быть пустой), т.е.,
df.getNegativeSuffix()- Не число локали
- Строка, представляющая не число для чисел с плавающей точкой, т.е.,
dfs.getNaN()- Бесконечность локали
- Строка, представляющая бесконечность для чисел с плавающей точкой, т.е.,
dfs.getInfinity()
Синтаксис чисел
Строки, которые могут быть проанализированы как числа экземпляром этого класса, определяются в терминах следующей грамматики регулярных выражений, где Rmax - максимальная цифра в используемом основании (например, Rmax - 9 в основании 10).
- Символ не ASCII:
- Символ c, не являющийся символом ASCII, для которого
Character.isDigit(c)возвращает true - Цифра, отличная от 0:
-
[1-Rmax] |Символ не ASCII - Цифра:
-
[0-Rmax] |Символ не ASCII - Сгруппированная цифра:
-
(Цифра, отличная от 0 Цифра?Цифра?(Разделитель группировки локали Цифра Цифра Цифра)+ ) - Цифровой ряд:
-
( (Цифра+ ) |Сгруппированная цифра) - Целое число:
-
( [-+]? (Цифровой ряд) )|Положительный префикс локали Цифровой ряд Положительный суффикс локали|Отрицательный префикс локали Цифровой ряд Отрицательный суффикс локали - Десятичная цифра:
-
Цифровой ряд
|Цифровой ряд Десятичный разделитель локали Цифра*|Десятичный разделитель локали Цифра+ - Экспонента:
-
( [eE] [+-]?Цифра+ ) - Десятичное число:
-
( [-+]?Десятичная цифра Экспонента? )|Положительный префикс локали Десятичная цифра Положительный суффикс локали Экспонента?|Отрицательный префикс локали Десятичная цифра Отрицательный суффикс локали Экспонента? - Шестнадцатеричное число с плавающей точкой:
-
[-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)? - Не число:
-
NaN |Не число локали| Infinity |Бесконечность локали - Отрицательное не число:
-
( [-+]?Не число)|Положительный префикс локали Не число Положительный суффикс локали|Отрицательный префикс локали Не число Отрицательный суффикс локали - Число с плавающей точкой:
-
Десятичное число
|Шестнадцатеричное число с плавающей точкой|Отрицательное не число
Пробелы не имеют значения в приведенных выше регулярных выражениях.
- С:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного потока ввода. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного источника. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанной строки. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного канала. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного канала. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного канала. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. |
Scanner |
Создаёт новый Scanner, который генерирует значения, считанные из указанного файла. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает этот сканер. |
Pattern |
delimiter() |
Возвращает Pattern , которое в данный момент используется этим Scanner для сопоставления разделителей. |
Stream |
findAll |
Возвращает поток результатов сопоставления, которые соответствуют указанной строке шаблона. |
Stream |
findAll |
Возвращает поток результатов сопоставления из этого сканера. |
String |
findInLine |
Попытка найти следующее вхождение шаблона, построенного из указанной строки, игнорируя разделители. |
String |
findInLine |
Попытка найти следующее вхождение указанного шаблона, игнорируя разделители. |
String |
findWithinHorizon |
Попытка найти следующее вхождение шаблона, построенного из указанной строки, игнорируя разделители. |
String |
findWithinHorizon |
Попытка найти следующее вхождение указанного шаблона. |
boolean |
hasNext() |
Возвращает true, если в входных данных этого сканера есть другой токен. |
boolean |
hasNext |
Возвращает true, если следующий токен соответствует шаблону, построенному из указанной строки. |
boolean |
hasNext |
Возвращает true, если следующий полный токен соответствует указанному шаблону. |
boolean |
hasNextBigDecimal() |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как BigDecimal с использованием метода nextBigDecimal(). |
boolean |
hasNextBigInteger() |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как BigInteger в базовом радиксе с использованием метода nextBigInteger(). |
boolean |
hasNextBigInteger |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как BigInteger в указанном радиксе с использованием метода nextBigInteger(). |
boolean |
hasNextBoolean() |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как булево значение с использованием нечувствительного к регистру шаблона, созданного из строки "true|false". |
boolean |
hasNextByte() |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа byte в базовом радиксе с использованием метода nextByte(). |
boolean |
hasNextByte |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа byte в указанном радиксе с использованием метода nextByte(). |
boolean |
hasNextDouble() |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа double с использованием метода nextDouble(). |
boolean |
hasNextFloat() |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа float с использованием метода nextFloat(). |
boolean |
hasNextInt() |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа int в базовом радиксе с использованием метода nextInt(). |
boolean |
hasNextInt |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа int в указанном радиксе с использованием метода nextInt(). |
boolean |
hasNextLine() |
Возвращает true, если в входных данных этого сканера есть другая строка. |
boolean |
hasNextLong() |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа long в базовом радиксе с использованием метода nextLong(). |
boolean |
hasNextLong |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа long в указанном радиксе с использованием метода nextLong(). |
boolean |
hasNextShort() |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа short в базовом радиксе с использованием метода nextShort(). |
boolean |
hasNextShort |
Возвращает true, если следующий токен в входных данных этого сканера может быть интерпретирован как значение типа short в указанном радиксе с использованием метода nextShort(). |
IOException |
ioException() |
Возвращает последнее исключение, сгенерированное базовым Readable этого Scanner. |
Locale |
locale() |
Возвращает локаль этого сканера. |
MatchResult |
match() |
Возвращает результат сопоставления последней операции сканирования, выполненной этим сканером. |
String |
next() |
Находит и возвращает следующий полный токен из этого сканера. |
String |
next |
Возвращает следующий токен, если он соответствует шаблону, построенному из указанной строки. |
String |
next |
Возвращает следующий токен, если он соответствует указанному шаблону. |
BigDecimal |
nextBigDecimal() |
Сканирует следующий токен входных данных как BigDecimal. |
BigInteger |
nextBigInteger() |
Сканирует следующий токен входных данных как BigInteger. |
BigInteger |
nextBigInteger |
Сканирует следующий токен входных данных как BigInteger. |
boolean |
nextBoolean() |
Сканирует следующий токен входных данных в булево значение и возвращает это значение. |
byte |
nextByte() |
Сканирует следующий токен входных данных как byte. |
byte |
nextByte |
Сканирует следующий токен входных данных как byte. |
double |
nextDouble() |
Сканирует следующий токен входных данных как double. |
float |
nextFloat() |
Сканирует следующий токен входных данных как float. |
int |
nextInt() |
Сканирует следующий токен входных данных как int. |
int |
nextInt |
Сканирует следующий токен входных данных как int. |
String |
nextLine() |
Перемещает этот сканер за текущую строку и возвращает пропущенный ввод. |
long |
nextLong() |
Сканирует следующий токен входных данных как long. |
long |
nextLong |
Сканирует следующий токен входных данных как long. |
short |
nextShort() |
Сканирует следующий токен входных данных как short. |
short |
nextShort |
Сканирует следующий токен входных данных как short. |
int |
radix() |
Возвращает базовый радикс этого сканера. |
void |
remove() |
Операция удаления не поддерживается этой реализацией Iterator. |
Scanner |
reset() |
Сбрасывает этот сканер. |
Scanner |
skip |
Пропускает ввод, соответствующий шаблону, построенному из указанной строки. |
Scanner |
skip |
Пропускает ввод, соответствующий указанному шаблону, игнорируя разделители. |
Stream |
tokens() |
Возвращает поток токенов, разделенных разделителями, из этого сканера. |
String |
toString() |
Возвращает строковое представление этого Scanner. |
Scanner |
useDelimiter |
Устанавливает разделительный шаблон этого сканера на шаблон, построенный из указанного String. |
Scanner |
useDelimiter |
Устанавливает разделительный шаблон этого сканера на указанный шаблон. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.util.Iterator
forEachRemaining
Подробное описание конструкторов
Scanner
public Scanner(Readable source)
Scanner, который считывает значения из указанного источника.- Параметры:
-
source- Источник символов, реализующий интерфейсReadable
Scanner
public Scanner(InputStream source)
Scanner, который считывает значения из указанного потока ввода. Байты из потока преобразуются в символы с использованием по умолчанию кодировки.- Параметры:
-
source- Поток ввода для сканирования - См. также:
Scanner
public Scanner(InputStream source, String charsetName)
Scanner, который считывает значения из указанного потока ввода. Байты из потока преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source- Поток ввода для сканирования -
charsetName- Тип кодировки, используемый для преобразования байтов из потока в символы для сканирования - Исключения:
-
IllegalArgumentException- если указанная кодировка не существует
Scanner
public Scanner(InputStream source, Charset charset)
Scanner, который считывает значения из указанного потока ввода. Байты из потока преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source- Поток ввода для сканирования -
charset- Кодировка, используемая для преобразования байтов из файла в символы для сканирования - С:
- 10
Scanner
public Scanner(File source) throws FileNotFoundException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием по умолчанию кодировки.- Параметры:
-
source- Файл для сканирования - Исключения:
-
FileNotFoundException- если исходный файл не найден - См. также:
Scanner
public Scanner(File source, String charsetName) throws FileNotFoundException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source- Файл для сканирования -
charsetName- Тип кодировки, используемый для преобразования байтов из файла в символы для сканирования - Исключения:
-
FileNotFoundException- если исходный файл не найден -
IllegalArgumentException- если указанная кодировка не найдена
Scanner
public Scanner(File source, Charset charset) throws IOException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source- Файл для сканирования -
charset- Кодировка, используемая для преобразования байтов из файла в символы для сканирования - Исключения:
-
IOException- если при открытии источника возникла ошибка ввода-вывода - С:
- 10
Scanner
public Scanner(Path source) throws IOException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием по умолчанию кодировки.- Параметры:
-
source- Путь к файлу для сканирования - Исключения:
-
IOException- если при открытии источника возникла ошибка ввода-вывода - С:
- 1.7
- См. также:
Scanner
public Scanner(Path source, String charsetName) throws IOException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source- Путь к файлу для сканирования -
charsetName- Тип кодировки, используемый для преобразования байтов из файла в символы для сканирования - Исключения:
-
IOException- если при открытии источника возникла ошибка ввода-вывода -
IllegalArgumentException- если указанная кодировка не найдена - С:
- 1.7
Scanner
public Scanner(Path source, Charset charset) throws IOException
Scanner, который считывает значения из указанного файла. Байты из файла преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source- Путь к файлу для сканирования -
charset- Кодировка, используемая для преобразования байтов из файла в символы для сканирования - Исключения:
-
IOException- если при открытии источника возникла ошибка ввода-вывода - С:
- 10
Scanner
public Scanner(String source)
Scanner, который считывает значения из указанной строки.- Параметры:
-
source- Строка для сканирования
Scanner
public Scanner(ReadableByteChannel source)
Scanner, который считывает значения из указанного канала. Байты из источника преобразуются в символы с использованием по умолчанию кодировки.- Параметры:
-
source- Канал для сканирования - См. также:
Scanner
public Scanner(ReadableByteChannel source, String charsetName)
Scanner, который считывает значения из указанного канала. Байты из источника преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source- Канал для сканирования -
charsetName- Тип кодировки, используемый для преобразования байтов из канала в символы для сканирования - Исключения:
-
IllegalArgumentException- если указанная кодировка не существует
Scanner
public Scanner(ReadableByteChannel source, Charset charset)
Scanner, который считывает значения из указанного канала. Байты из источника преобразуются в символы с использованием указанной кодировки.- Параметры:
-
source- Канал для сканирования -
charset- Тип кодировки, используемый для преобразования байтов из канала в символы для сканирования - С:
- 10
Подробное описание методов
close
public void close()
Если этот сканер ещё не закрыт, а его базовый источник данных также реализует интерфейс Closeable, то метод close данного источника будет вызван. Если этот сканер уже закрыт, вызов этого метода не повлияет на него.
Попытка выполнить операции поиска после закрытия сканера приведёт к исключению IllegalStateException.
- Унаследован от:
-
closeв интерфейсеAutoCloseable - Унаследован от:
-
closeв интерфейсеCloseable
ioException
public IOException ioException()
IOException последний брошенный объектом Scanner базовый Readable. Этот метод возвращает null если такое исключение не существует.- Возвращает:
- последнее исключение, брошенное источником данных сканера
delimiter
public Pattern delimiter()
Pattern используемый данным Scanner для соответствия разделителям.- Возвращает:
- шаблон разделителя данного сканера.
useDelimiter
public Scanner useDelimiter(Pattern pattern)
- Параметры:
-
pattern- Шаблон разделителя - Возвращает:
- этот сканер
useDelimiter
public Scanner useDelimiter(String pattern)
String. Вызов этого метода в форме useDelimiter(pattern) ведет себя точно так же, как вызов useDelimiter(Pattern.compile(pattern)).
Вызов метода reset() установит разделитель сканера на по умолчанию.
- Параметры:
-
pattern- Строка, определяющая шаблон разделителя - Возвращает:
- этот сканер
locale
public Locale locale()
Локаль сканера влияет на многие элементы его стандартных регулярных выражений для сопоставления примитивных типов; см. локализованные числа выше.
- Возвращает:
- локаль этого сканера
useLocale
public Scanner useLocale(Locale locale)
Локаль сканера влияет на многие элементы его стандартных регулярных выражений для примитивного сопоставления; см. локализованные числа выше.
Вызов метода reset() установит локаль сканера на начальную локаль.
- Parameters:
-
locale- Строка, определяющая используемую локаль - Returns:
- этот сканер
radix
public int radix()
Радикс сканера влияет на элементы его стандартных регулярных выражений для сопоставления чисел; см. локализованные числа выше.
- Returns:
- стандартный радикс этого сканера
useRadix
public Scanner useRadix(int radix)
Радикс сканера влияет на элементы его стандартных регулярных выражений для сопоставления чисел; см. локализованные числа выше.
Если радикс меньше Character.MIN_RADIX или больше Character.MAX_RADIX, будет брошено исключение IllegalArgumentException.
Вызов метода reset() установит радикс сканера на 10.
- Parameters:
-
radix- Радикс, используемый при сканировании чисел - Returns:
- этот сканер
- Throws:
-
IllegalArgumentException- если радикс находится вне допустимого диапазона
match
public MatchResult match()
IllegalStateException, если не было выполнено сопоставления или последнее сопоставление не было успешным. Различные методы next класса Scanner делают результат сопоставления доступным, если они завершаются без выбрасывания исключения. Например, после вызова метода nextInt(), вернувшего целое число, этот метод возвращает результат MatchResult для поиска регулярного выражения Integer, определенного выше. Аналогично, методы findInLine(), findWithinHorizon() и skip() сделают результат сопоставления доступным, если они пройдут успешно.
- Returns:
- результат сопоставления последней операции
- Throws:
-
IllegalStateException- Если результат сопоставления недоступен
toString
public String toString()
Возвращает строковое представление этого Scanner. Строковое представление Scanner содержит информацию, которая может быть полезна для отладки. Точный формат не определен.
- Overrides:
-
toStringв классеObject - Returns:
- строковое представление этого сканера
hasNext
public boolean hasNext()
- Specified by:
-
hasNextв интерфейсеIterator<String> - Returns:
- true, если и только если у этого сканера есть другой токен
- Throws:
-
IllegalStateException- если этот сканер закрыт - See Also:
next
public String next()
hasNext() вернул true.- Specified by:
-
nextв интерфейсеIterator<String> - Returns:
- следующий токен
- Throws:
-
NoSuchElementException- если больше нет токенов -
IllegalStateException- если этот сканер закрыт - See Also:
remove
public void remove()
Iterator.- Specified by:
-
removeв интерфейсеIterator<String> - Throws:
-
UnsupportedOperationException- если этот метод вызывается. - See Also:
hasNext
public boolean hasNext(String pattern)
Вызов этого метода в форме hasNext(pattern) ведет себя точно так же, как вызов hasNext(Pattern.compile(pattern)).
- Parameters:
-
pattern- строка, определяющая шаблон для сканирования - Returns:
- true, если и только если у этого сканера есть другой токен, соответствующий указанному шаблону
- Throws:
-
IllegalStateException- если этот сканер закрыт
next
public String next(String pattern)
Вызов этого метода в форме next(pattern) ведет себя точно так же, как вызов next(Pattern.compile(pattern)).
- Parameters:
-
pattern- строка, определяющая шаблон для сканирования - Returns:
- следующий токен
- Throws:
-
NoSuchElementException- если таких токенов больше нет -
IllegalStateException- если этот сканер закрыт
hasNext
public boolean hasNext(Pattern pattern)
- Parameters:
-
pattern- шаблон для сканирования - Returns:
- true, если и только если у этого сканера есть другой токен, соответствующий указанному шаблону
- Throws:
-
IllegalStateException- если этот сканер закрыт
next
public String next(Pattern pattern)
hasNext(Pattern) вернул true. Если сопоставление успешно, сканер перемещается за ввод, который соответствовал шаблону.- Parameters:
-
pattern- шаблон для сканирования - Returns:
- следующий токен
- Throws:
-
NoSuchElementException- если больше нет токенов -
IllegalStateException- если этот сканер закрыт
hasNextLine
public boolean hasNextLine()
- Returns:
- true, если в оставшемся вводе есть разделитель строк или если в вводе есть другие оставшиеся символы
- Throws:
-
IllegalStateException- если этот сканер закрыт
nextLine
public String nextLine()
Поскольку этот метод продолжает поиск по вводу, ища разделитель строк, он может буферизовать весь ввод, ища строку для пропуска, если разделителей строк нет.
- Returns:
- пропущенная строка
- Throws:
-
NoSuchElementException- если строка не найдена -
IllegalStateException- если этот сканер закрыт
findInLine
public String findInLine(String pattern)
Вызов этого метода в форме findInLine(pattern) ведет себя точно так же, как вызов findInLine(Pattern.compile(pattern)).
- Parameters:
-
pattern- строка, определяющая шаблон для поиска - Returns:
- текст, соответствующий указанному шаблону
- Throws:
-
IllegalStateException- если этот сканер закрыт
findInLine
public String findInLine(Pattern pattern)
null, и позиция сканера не меняется. Этот метод может блокироваться, ожидая ввода, соответствующего шаблону. Поскольку этот метод продолжает поиск по вводу, ища указанный шаблон, он может буферизовать весь ввод, ища нужный токен, если разделителей строк нет.
- Parameters:
-
pattern- шаблон для сканирования - Returns:
- текст, соответствующий указанному шаблону
- Throws:
-
IllegalStateException- если этот сканер закрыт
findWithinHorizon
public String findWithinHorizon(String pattern, int horizon)
Вызов этого метода в форме findWithinHorizon(pattern) ведет себя точно так же, как вызов findWithinHorizon(Pattern.compile(pattern), horizon).
- Parameters:
-
pattern- строка, определяющая шаблон для поиска -
horizon- горизонт поиска - Returns:
- текст, соответствующий указанному шаблону
- Throws:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если горизонт отрицательный
findWithinHorizon
public String findWithinHorizon(Pattern pattern, int horizon)
Этот метод ищет ввода до указанного горизонта поиска, игнорируя разделители. Если шаблон найден, сканер перемещается за ввод, который сопоставился, и возвращает строку, которая сопоставилась с шаблоном. Если такой шаблон не обнаружен, возвращается null, и позиция сканера остается неизменной. Этот метод может блокироваться, ожидая ввода, который соответствует шаблону.
Сканер никогда не будет искать более чем horizon кодовых точек за пределами своей текущей позиции. Обратите внимание, что результат соответствия может быть урезан горизонтом; то есть произвольный результат соответствия мог быть другим, если горизонт был больше. Сканер обрабатывает горизонт как прозрачную, не якорящую границу (см. Matcher.useTransparentBounds(boolean) и Matcher.useAnchoringBounds(boolean)).
Если горизонт равен 0, горизонт игнорируется, и этот метод продолжает поиск по вводу, ища указанный шаблон без ограничений. В этом случае он может буферизовать весь ввод, ища шаблон.
Если горизонт отрицательный, возникает исключение IllegalArgumentException.
- Parameters:
-
pattern- шаблон для поиска -
horizon- горизонт поиска - Returns:
- текст, соответствующий указанному шаблону
- Throws:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если горизонт отрицательный
skip
public Scanner skip(Pattern pattern)
Если соответствие указанному шаблону не найдено в текущей позиции, то ввод не пропускается и генерируется исключение NoSuchElementException.
Поскольку этот метод пытается сопоставить указанный шаблон, начиная с текущей позиции сканера, шаблоны, которые могут сопоставляться со многим вводом (".*", например), могут привести к тому, что сканер будет буферизовать большое количество ввода.
Обратите внимание, что можно пропустить что-либо, не рискуя NoSuchElementException, используя шаблон, который может ничего не сопоставить, например, sc.skip("[ \t]*").
- Parameters:
-
pattern- строка, определяющая шаблон для пропуска - Returns:
- этот сканер
- Throws:
-
NoSuchElementException- если указанный шаблон не найден -
IllegalStateException- если этот сканер закрыт
skip
public Scanner skip(String pattern)
Вызов этого метода в форме skip(pattern) ведет себя точно так же, как вызов skip(Pattern.compile(pattern)).
- Parameters:
-
pattern- строка, определяющая шаблон для пропуска - Returns:
- этот сканер
- Throws:
-
IllegalStateException- если этот сканер закрыт
hasNextBoolean
public boolean hasNextBoolean()
- Returns:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым булевым значением
- Throws:
-
IllegalStateException- если этот сканер закрыт
nextBoolean
public boolean nextBoolean()
InputMismatchException, если следующий токен не может быть преобразован в допустимое булево значение. Если соответствие успешно, сканер перемещается за ввод, которому соответствовал.- Returns:
- булевое значение, прочитанное из ввода
- Throws:
-
InputMismatchException- если следующий токен не является допустимым булевым -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт
hasNextByte
public boolean hasNextByte()
nextByte(). Сканер не переходит за любой ввод.- Returns:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа byte
- Throws:
-
IllegalStateException- если этот сканер закрыт
hasNextByte
public boolean hasNextByte(int radix)
nextByte(). Сканер не переходит за любой ввод. Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, генерируется IllegalArgumentException.
- Parameters:
-
radix- основание, используемое для интерпретации токена как значения типа byte - Returns:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа byte
- Throws:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне диапазона
nextByte
public byte nextByte()
byte. Вызов этого метода в форме nextByte() ведет себя точно так же, как вызов nextByte(radix), где radix - это основание по умолчанию этого сканера.
- Returns:
byteпрочитанный из ввода- Throws:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт
nextByte
public byte nextByte(int radix)
byte. Этот метод сгенерирует InputMismatchException, если следующий токен не может быть преобразован в допустимое значение типа byte, как описано ниже. Если преобразование успешно, сканер перемещается за ввод, которому соответствовал. Если следующий токен соответствует регулярному выражению Integer, определенному выше, то токен преобразуется в значение типа byte как если бы он удалял все локально специфические префиксы, разделители групп и локально специфические суффиксы, затем преобразовывал не-ASCII цифры в ASCII цифры с помощью Character.digit, добавлял знак минус (-) если присутствовали локально специфические префиксы и суффиксы отрицательных значений и передавал полученную строку в Byte.parseByte со значением указанного основания.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, генерируется IllegalArgumentException.
- Parameters:
-
radix- основание, используемое для интерпретации токена как значения типа byte - Returns:
- значение типа
byteиз ввода - Throws:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне диапазона
hasNextShort
public boolean hasNextShort()
nextShort(). Сканер не переходит за любой ввод.- Returns:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа short в стандартном формате
- Throws:
-
IllegalStateException- если этот сканер закрыт
hasNextShort
public boolean hasNextShort(int radix)
nextShort(). Сканер не переходит за любой ввод. Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, генерируется IllegalArgumentException.
- Parameters:
-
radix- основание, используемое для интерпретации токена как значения типа short - Returns:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа short в указанной системе счисления
- Throws:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне диапазона
nextShort
public short nextShort()
short. Вызов этого метода в форме nextShort() ведет себя точно так же, как вызов nextShort(radix), где radix - это основание по умолчанию этого сканера.
- Returns:
- значение типа
shortиз ввода - Throws:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если ввод исчерпан -
IllegalStateException- если этот сканер закрыт
nextShort
public short nextShort(int radix)
short. Этот метод выбросит InputMismatchException если следующий токен не может быть преобразован в допустимое значение типа short, как описано ниже. Если преобразование успешно, сканер переходит к следующей части входного потока, соответствующей этому токену. Если следующий токен соответствует регулярному выражению Целое число, определённому выше, то токен преобразуется в значение типа short так, как если бы были удалены все префиксы, разделители групп и суффиксы, зависящие от локали, затем не-ASCII цифры были заменены на ASCII цифры с помощью Character.digit, префикс «-» добавляется, если присутствуют префиксы и суффиксы для отрицательных значений, зависящие от локали, и полученная строка передается в Short.parseShort со специфицированным основанием.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбросится IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа short - Возвращает:
- сканированное из входного потока значение типа
short - Исключения:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Целое число или находится вне диапазона -
NoSuchElementException- если входной поток исчерпан -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
hasNextInt
public boolean hasNextInt()
nextInt(). Сканер не перемещается вперёд по входу.- Возвращает:
- true, если и только если следующий токен сканера является допустимым значением типа int
- Исключения:
-
IllegalStateException- если этот сканер закрыт
hasNextInt
public boolean hasNextInt(int radix)
nextInt(). Сканер не перемещается вперёд по входу. Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбросится IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа int - Возвращает:
- true, если и только если следующий токен сканера является допустимым значением типа int
- Исключения:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
nextInt
public int nextInt()
int. Вызов этого метода в формате nextInt() ведет себя точно так же, как вызов nextInt(radix), где radix является стандартным основанием данного сканера.
- Возвращает:
- сканированное из входного потока значение типа
int - Исключения:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Целое число или находится вне диапазона -
NoSuchElementException- если входной поток исчерпан -
IllegalStateException- если этот сканер закрыт
nextInt
public int nextInt(int radix)
int. Этот метод выбросит InputMismatchException если следующий токен не может быть преобразован в допустимое значение типа int, как описано ниже. Если преобразование успешно, сканер переходит к следующей части входного потока, соответствующей этому токену. Если следующий токен соответствует регулярному выражению Целое число, определённому выше, то токен преобразуется в значение типа int так, как если бы были удалены все префиксы, разделители групп и суффиксы, зависящие от локали, затем не-ASCII цифры были заменены на ASCII цифры с помощью Character.digit, префикс «-» добавляется, если присутствуют префиксы и суффиксы для отрицательных значений, зависящие от локали, и полученная строка передается в Integer.parseInt со специфицированным основанием.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбросится IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа int - Возвращает:
- сканированное из входного потока значение типа
int - Исключения:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Целое число или находится вне диапазона -
NoSuchElementException- если входной поток исчерпан -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
hasNextLong
public boolean hasNextLong()
nextLong(). Сканер не перемещается вперёд по входу.- Возвращает:
- true, если и только если следующий токен сканера является допустимым значением типа long
- Исключения:
-
IllegalStateException- если этот сканер закрыт
hasNextLong
public boolean hasNextLong(int radix)
nextLong(). Сканер не перемещается вперёд по входу. Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбросится IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа long - Возвращает:
- true, если и только если следующий токен сканера является допустимым значением типа long
- Исключения:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
nextLong
public long nextLong()
long. Вызов этого метода в формате nextLong() ведет себя точно так же, как вызов nextLong(radix), где radix является стандартным основанием данного сканера.
- Возвращает:
- сканированное из входного потока значение типа
long - Исключения:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Целое число или находится вне диапазона -
NoSuchElementException- если входной поток исчерпан -
IllegalStateException- если этот сканер закрыт
nextLong
public long nextLong(int radix)
long. Этот метод выбросит InputMismatchException если следующий токен не может быть преобразован в допустимое значение типа long, как описано ниже. Если преобразование успешно, сканер переходит к следующей части входного потока, соответствующей этому токену. Если следующий токен соответствует регулярному выражению Целое число, определённому выше, то токен преобразуется в значение типа long так, как если бы были удалены все префиксы, разделители групп и суффиксы, зависящие от локали, затем не-ASCII цифры были заменены на ASCII цифры с помощью Character.digit, префикс «-» добавляется, если присутствуют префиксы и суффиксы для отрицательных значений, зависящие от локали, и полученная строка передается в Long.parseLong со специфицированным основанием.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбросится IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения типа int - Возвращает:
- сканированное из входного потока значение типа
long - Исключения:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Целое число или находится вне диапазона -
NoSuchElementException- если входной поток исчерпан -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
hasNextFloat
public boolean hasNextFloat()
nextFloat(). Сканер не перемещается вперёд по входу.- Возвращает:
- true, если и только если следующий токен сканера является допустимым значением типа float
- Исключения:
-
IllegalStateException- если этот сканер закрыт
nextFloat
public float nextFloat()
float. Этот метод выбросит InputMismatchException если следующий токен не может быть преобразован в допустимое значение типа float, как описано ниже. Если преобразование успешно, сканер переходит к следующей части входного потока, соответствующей этому токену. Если следующий токен соответствует регулярному выражению Вещественное число, определённому выше, то токен преобразуется в значение типа float так, как если бы были удалены все префиксы, разделители групп и суффиксы, зависящие от локали, затем не-ASCII цифры были заменены на ASCII цифры с помощью Character.digit, префикс «-» добавляется, если присутствуют префиксы и суффиксы для отрицательных значений, зависящие от локали, и полученная строка передается в Float.parseFloat. Если токен соответствует локализованным строкам NaN или бесконечности, то «Nan» или «Infinity» передаются в Float.parseFloat соответственно.
- Возвращает:
- сканированное из входного потока значение типа
float - Исключения:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Вещественное число или находится вне диапазона -
NoSuchElementException- если входной поток исчерпан -
IllegalStateException- если этот сканер закрыт
hasNextDouble
public boolean hasNextDouble()
nextDouble(). Сканер не перемещается дальше по вводу.- Возвращает:
- true тогда и только тогда, когда следующий токен сканера является допустимым значением типа double
- Исключение:
-
IllegalStateException- если этот сканер закрыт
nextDouble
public double nextDouble()
double. Этот метод выбросит InputMismatchException , если следующий токен не может быть преобразован в допустимое значение типа double. Если преобразование успешно, сканер перемещается дальше по вводу, который соответствовал. Если следующий токен соответствует регулярному выражению Float, определенному выше, то токен преобразуется в значение типа double как будто путем удаления всех специфичных для локали префиксов, разделителей групп и специфичных для локали суффиксов, затем преобразования не-ASCII цифр в ASCII цифры с помощью Character.digit, добавления отрицательного знака (-) если были присутствующие специфичные для локали отрицательные префиксы и суффиксы, и передачи полученной строки методу Double.parseDouble. Если токен соответствует локализованным строкам NaN или бесконечности, то соответственно «Nan» или «Infinity» передаются методу Double.parseDouble.
- Возвращает:
- сканированное значение типа
doubleиз входных данных - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Float, или находится вне допустимого диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт
hasNextBigInteger
public boolean hasNextBigInteger()
BigInteger в базовом формате по умолчанию с помощью метода nextBigInteger(). Сканер не перемещается дальше по вводу.- Возвращает:
- true тогда и только тогда, когда следующий токен сканера является допустимым значением
BigInteger - Исключение:
-
IllegalStateException- если этот сканер закрыт
hasNextBigInteger
public boolean hasNextBigInteger(int radix)
BigInteger в указанном формате с помощью метода nextBigInteger(). Сканер не перемещается дальше по вводу. Если формат меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбрасывается IllegalArgumentException.
- Параметры:
-
radix- формат, используемый для интерпретации токена как целого числа - Возвращает:
- true тогда и только тогда, когда следующий токен сканера является допустимым значением
BigInteger - Исключение:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если формат находится вне допустимого диапазона
nextBigInteger
public BigInteger nextBigInteger()
BigInteger. Вызов этого метода в форме nextBigInteger() ведет себя точно так же, как вызов nextBigInteger(radix), где radix - это формат по умолчанию для этого сканера.
- Возвращает:
- сканированное значение типа
BigIntegerиз входных данных - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer, или находится вне допустимого диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт
nextBigInteger
public BigInteger nextBigInteger(int radix)
BigInteger. Если следующий токен соответствует регулярному выражению Integer, определенному выше, то токен преобразуется в значение типа BigInteger как будто путем удаления всех разделителей групп, преобразования не-ASCII цифр в ASCII цифры с помощью Character.digit и передачи полученной строки в конструктор BigInteger(String, int) со значением указанного формата.
Если формат меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбрасывается IllegalArgumentException.
- Параметры:
-
radix- формат, используемый для интерпретации токена - Возвращает:
- сканированное значение типа
BigIntegerиз входных данных - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer, или находится вне допустимого диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если формат находится вне допустимого диапазона
hasNextBigDecimal
public boolean hasNextBigDecimal()
BigDecimal с помощью метода nextBigDecimal(). Сканер не перемещается дальше по вводу.- Возвращает:
- true тогда и только тогда, когда следующий токен сканера является допустимым значением
BigDecimal - Исключение:
-
IllegalStateException- если этот сканер закрыт
nextBigDecimal
public BigDecimal nextBigDecimal()
BigDecimal. Если следующий токен соответствует регулярному выражению Decimal, определенному выше, то токен преобразуется в значение типа BigDecimal как будто путем удаления всех разделителей групп, преобразования не-ASCII цифр в ASCII цифры с помощью Character.digit и передачи полученной строки в конструктор BigDecimal(String).
- Возвращает:
- сканированное значение типа
BigDecimalиз входных данных - Исключение:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Decimal, или находится вне допустимого диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт
reset
public Scanner reset()
Сброс сканера отбрасывает всю его явную информацию состояния, которая могла быть изменена вызовами useDelimiter(), useLocale() или useRadix().
Вызов этого метода в форме scanner.reset() ведет себя точно так же, как вызов
scanner.useDelimiter("\\p{javaWhitespace}+") .useLocale(Locale.getDefault(Locale.Category.FORMAT)) .useRadix(10);
- Возвращает:
- эту строку сканера
- С момента:
- 1.6
tokens
public Stream<String> tokens()
next() повторно до тех пор, пока метод hasNext() не вернёт false. Полученный поток последовательный и упорядоченный. Все элементы потока не равны null.
Сканирование начинается при инициализации конечной операции потока, используя текущее состояние этого сканера. Последующие вызовы любых методов этого сканера, кроме close() и ioException(), могут вернуть неопределённые результаты или могут вызвать неопределённые эффекты на возвращаемый поток. Источник возвращаемого потока Spliterator является быстродействующим и будет, по возможности, выбросить ConcurrentModificationException, если такие вызовы будут обнаружены во время выполнения потоковой обработки.
После завершения выполнения потоковой обработки этот сканер остается в неопределённом состоянии и не может быть повторно использован.
Если этот сканер содержит ресурс, который необходимо освободить, этот сканер должен быть закрыт, либо вызвав его метод close(), либо закрыв возвращаемый поток. Закрытие потока закроет подлежащий сканер. IllegalStateException выбрасывается, если сканер был закрыт, когда этот метод был вызван, или если этот сканер закрыт во время выполнения потоковой обработки.
Этот метод может блокироваться, ожидая большего ввода.
- Примечание API:
- Например, следующий код создаст список токенов, разделённых запятыми, из строки:
List<String> result = new Scanner("abc,def,,ghi") .useDelimiter(",") .tokens() .collect(Collectors.toList());Результат будет содержать
"abc","def", пустую строку и"ghi". - Возвращает:
- последовательный поток строковых токенов
- Исключение:
-
IllegalStateException- если этот сканер закрыт - С момента:
- 9
findAll
public Stream<MatchResult> findAll(Pattern pattern)
findWithinHorizon(pattern, 0) и затем match() последовательно, до тех пор, пока findWithinHorizon() находит совпадения. Полученный поток последовательный и упорядоченный. Все элементы потока не равны null.
Сканирование начинается при инициализации терминальной операции потока, используя текущее состояние этого сканера. Последующие вызовы любых методов этого сканера, кроме close() и ioException(), могут возвращать неопределённые результаты или вызывать неопределённые эффекты на возвращённый поток. Источник возвращённого потока Spliterator является fail-fast и, с наилучшим результатом, бросит исключение ConcurrentModificationException, если будут обнаружены такие вызовы во время выполнения потоковой обработки.
После завершения потоковой обработки этот сканер остаётся в неопределённом состоянии и не может быть повторно использован.
Если этот сканер содержит ресурс, который необходимо освободить, этот сканер должен быть закрыт, либо вызвав его метод close(), либо закрыв возвращённый поток. Закрытие потока закроет сканер. IllegalStateException будет брошено, если сканер был закрыт при вызове этого метода или если этот сканер закрыт во время выполнения потоковой обработки.
Как и в методах findWithinHorizon(), этот метод может блокироваться, ожидая дополнительных входных данных, и может буферизовать неограниченное количество входных данных, в поисках совпадения.
- API Note:
- Например, следующий код прочитает файл и вернёт список всех последовательностей символов, состоящих из семи или более заглавных латинских букв:
try (Scanner sc = new Scanner(Path.of("input.txt"))) { Pattern pat = Pattern.compile("[A-Z]{7,}"); List<String> capWords = sc.findAll(pat) .map(MatchResult::group) .collect(Collectors.toList()); } - Parameters:
-
pattern- шаблон для поиска совпадений - Returns:
- последовательный поток результатов совпадений
- Throws:
-
NullPointerException- если шаблон null -
IllegalStateException- если этот сканер закрыт - Since:
- 9
findAll
public Stream<MatchResult> findAll(String patString)
scanner.findAll(Pattern.compile(patString))
- Parameters:
-
patString- строка шаблона - Returns:
- последовательный поток результатов совпадений
- Throws:
-
NullPointerException- если patString null -
IllegalStateException- если этот сканер закрыт -
PatternSyntaxException- если синтаксис регулярного выражения некорректен - Since:
- 9
- See Also:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Scanner.html