Класс Scanner
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable,Iterator<String>
public final class Scanner extends Object implements Iterator<String>, Closeable
A Scanner разбивает входные данные на токены с использованием шаблона разделителя, который по умолчанию соответствует пробелам. Полученные токены затем могут быть преобразованы в значения различных типов с помощью различных next методов.
Например, этот код позволяет пользователю читать число из консоли.
var con = System.console();
if (con != null) {
Scanner sc = new Scanner(con.reader());
int i = sc.nextInt();
}
В качестве другого примера, этот код позволяет long типам присваивать значения из записей в файле myNumbers:
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()) сначала пропускают все входные данные, соответствующие шаблону разделителя, а затем пытаются вернуть следующий токен. Оба hasNext() и next() метода могут блокироваться, ожидая дополнительных входных данных. Блокируется ли метод hasNext() не связано с тем, будет ли блокироваться связанный с ним метод next(). Метод tokens() также может блокироваться, ожидая входных данных.
Методы findInLine(), findWithinHorizon(), skip() и findAll() работают независимо от шаблона разделителя. Эти методы будут пытаться сопоставить указанный шаблон с входными данными без учёта разделителей, поэтому могут использоваться в особых случаях, когда разделители не имеют значения. Эти методы могут блокироваться, ожидая дополнительных входных данных.
Когда сканер выбрасывает исключение InputMismatchException, сканер не обрабатывает токен, вызвавший исключение, чтобы он мог быть получен или пропущен с помощью другого метода.
В зависимости от типа шаблона разделителя, могут возвращаться пустые токены. Например, шаблон "\\s+" не возвращает пустых токенов, так как он соответствует нескольким экземплярам разделителя. Шаблон разделителя "\\s" может возвращать пустые токены, так как он пропускает только один пробел за раз.
Сканер может читать текст из любого объекта, реализующего интерфейс Readable. Если вызов метода read() базового объекта readable вызывает исключение IOException, то сканер предполагает, что конец входных данных достигнут. Последнее исключение IOException, сгенерированное базовым объектом readable, может быть получено с помощью метода ioException().
При закрытии сканера он закроет источник ввода, если источник реализует интерфейс Closeable.
Сканер не безопасен для многопоточной работы без внешней синхронизации.
Если не указано иное, передача null параметра в любой метод Scanner вызовет исключение 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 - Не-нулевая цифра:
-
[1-Rmax] |Не-ASCII-цифра - Цифра:
-
[0-Rmax] |Не-ASCII-цифра - Сгруппированное число:
-
(Не-нулевая цифра Цифра?Цифра?(Разделитель групп Цифра Цифра Цифра)+ ) - Число:
-
( (Цифра+ ) |Сгруппированное число) - Целое число:
-
( [-+]? (Число) )|Префикс положительного числа Число Суффикс положительного числа|Префикс отрицательного числа Число Суффикс отрицательного числа - Десятичное число:
-
Число
|Число Разделитель десятичных знаков Цифра*|Разделитель десятичных знаков Цифра+ - Порядок:
-
( [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, если следующий токен в входных данных этого сканера может быть интерпретирован как значение boolean с помощью нечувствительного к регистру шаблона, созданного из строки "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() |
Сканирует следующий токен ввода в виде значения boolean и возвращает это значение. |
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() |
Возвращает стандартный radix этого сканера. |
void |
remove() |
Операция remove не поддерживается этой реализацией Iterator. |
Scanner |
reset() |
Сбрасывает этот сканер. |
Scanner |
skip |
Пропускает ввод, соответствующий шаблону, построенному из указанной строки. |
Scanner |
skip |
Пропускает входные данные, соответствующие указанному шаблону, игнорируя разделители. |
Stream |
tokens() |
Возвращает поток разделителями-разделенных токенов из этого сканера. |
String |
toString() |
Возвращает строковое представление этого Scanner. |
Scanner |
useDelimiter |
Устанавливает разделительный шаблон этого сканера на шаблон, построенный из указанного String. |
Scanner |
useDelimiter |
Устанавливает разделительный шаблон этого сканера на указанный шаблон. |
Scanner |
useLocale |
Устанавливает локаль этого сканера на указанную локаль. |
Scanner |
useRadix |
Устанавливает по умолчанию основание этого сканера на указанное основание. |
Методы, объявленные в классе 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's базой Readable. Этот метод возвращает null, если такой исключения нет.- Возвращает:
- последнее исключение, брошенное базой сканера
delimiter
public Pattern delimiter()
Pattern, которое этот Scanner в настоящее время использует для сопоставления разделителей.- Возвращает:
- шаблон разделителя сканера.
useDelimiter
public Scanner useDelimiter(Pattern pattern)
- Parameters:
-
pattern- Шаблон разделителя - Returns:
- этот сканер
useDelimiter
public Scanner useDelimiter(String pattern)
String. Вызов этого метода в форме useDelimiter(pattern) ведет себя точно так же, как вызов useDelimiter(Pattern.compile(pattern)).
Вызов метода reset() установит разделитель сканера на по умолчанию.
- Parameters:
-
pattern- Строка, определяющая шаблон разделителя - Returns:
- этот сканер
locale
public Locale locale()
Локаль сканера влияет на многие элементы его стандартных выражений регулярных соответствий примитивов; см. локализованные числа выше.
- Returns:
- локаль этого сканера
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(), который вернул int, этот метод возвращает MatchResult для поиска регулярного выражения Integer, определенного выше. Аналогичным образом методы findInLine(), findWithinHorizon() и skip() сделают соответствие доступным, если они увенчаются успехом.
- Returns:
- результат соответствия последней операции соответствия
- Throws:
-
IllegalStateException- Если результат соответствия недоступен
toString
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()
Поскольку этот метод продолжает поиск ввода, ища разделитель строк, он может буферизовать весь ввод, ища строку для пропуска, если разделители строк отсутствуют.
- Возвращает:
- пропущенную строку
- Выбрасывает:
-
NoSuchElementException- если строка не найдена -
IllegalStateException- если этот сканер закрыт
findInLine
public String findInLine(String pattern)
Вызов этого метода в форме findInLine(pattern) ведет себя точно так же, как вызов findInLine(Pattern.compile(pattern)).
- Параметры:
-
pattern- строка, определяющая шаблон для поиска - Возвращает:
- текст, соответствующий указанному шаблону
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
findInLine
public String findInLine(Pattern pattern)
null, и позиция сканера остается неизменной. Этот метод может блокироваться, ожидая ввода, соответствующего шаблону. Поскольку этот метод продолжает поиск в вводе, ища указанный шаблон, он может буферизовать весь ввод, ища необходимый токен, если разделители строк отсутствуют.
- Параметры:
-
pattern- шаблон для поиска - Возвращает:
- текст, соответствующий указанному шаблону
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
findWithinHorizon
public String findWithinHorizon(String pattern, int horizon)
Вызов этого метода в форме findWithinHorizon(pattern) ведет себя точно так же, как вызов findWithinHorizon(Pattern.compile(pattern), horizon).
- Параметры:
-
pattern- строка, определяющая шаблон для поиска -
horizon- горизонт поиска - Возвращает:
- текст, соответствующий указанному шаблону
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если горизонт отрицателен
findWithinHorizon
public String findWithinHorizon(Pattern pattern, int horizon)
Этот метод ищет в вводе до указанного горизонта поиска, игнорируя разделители. Если шаблон найден, сканер переходит за ввод, которому соответствовал шаблон, и возвращает строку, соответствующую шаблону. Если такой шаблон не обнаружен, то возвращается null, а позиция сканера остается неизменной. Этот метод может блокироваться, ожидая ввода, соответствующего шаблону.
Сканер никогда не будет искать более чем horizon кодовых точек за пределами своей текущей позиции. Обратите внимание, что результат совпадения может быть усечен горизонтом; другими словами, результат совпадения мог бы быть другим, если бы горизонт был больше. Сканер обрабатывает горизонт как прозрачную, неякорную границу (см. Matcher.useTransparentBounds(boolean) и Matcher.useAnchoringBounds(boolean)).
Если горизонт равен 0, то горизонт игнорируется, и этот метод продолжает поиск указанного шаблона во вводе без ограничений. В этом случае он может буферизовать весь ввод, ища шаблон.
Если горизонт отрицательный, выбрасывается IllegalArgumentException.
- Параметры:
-
pattern- шаблон для поиска -
horizon- горизонт поиска - Возвращает:
- текст, соответствующий указанному шаблону
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если горизонт отрицательный
skip
public Scanner skip(Pattern pattern)
Если соответствие указанному шаблону не найдено в текущей позиции, то ничего не пропускается и выбрасывается NoSuchElementException.
Поскольку этот метод пытается сопоставить указанный шаблон, начиная с текущей позиции сканера, шаблоны, которые могут соответствовать большому количеству ввода (например, ".*"), могут привести к буферизации большого объема ввода.
Обратите внимание, что можно пропустить что-либо, не рискуя NoSuchElementException, используя шаблон, который может ничего не сопоставить, например, sc.skip("[ \t]*").
- Параметры:
-
pattern- шаблон для пропуска - Возвращает:
- этот сканер
- Выбрасывает:
-
NoSuchElementException- если указанный шаблон не найден -
IllegalStateException- если этот сканер закрыт
skip
public Scanner skip(String pattern)
Вызов этого метода в форме skip(pattern) ведет себя точно так же, как вызов skip(Pattern.compile(pattern)).
- Параметры:
-
pattern- строка, определяющая шаблон для пропуска - Возвращает:
- этот сканер
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
hasNextBoolean
public boolean hasNextBoolean()
- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым булевым значением
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
nextBoolean
public boolean nextBoolean()
InputMismatchException, если следующий токен не может быть преобразован в допустимое булево значение. Если соответствие успешно, сканер перемещается за ввод, которому соответствовал шаблон.- Возвращает:
- сканированное из входных данных булево значение
- Выбрасывает:
-
InputMismatchException- если следующий токен не является допустимым булевым значением -
NoSuchElementException- если вход исчерпан -
IllegalStateException- если этот сканер закрыт
hasNextByte
public boolean hasNextByte()
nextByte(). Сканер не перемещается за какой-либо ввод.- Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым байтовым значением
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт
hasNextByte
public boolean hasNextByte(int radix)
nextByte(). Сканер не перемещается за какой-либо ввод. Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то выбрасывается IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как байтового значения - Возвращает:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым байтовым значением
- Выбрасывает:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
nextByte
public byte nextByte()
byte. Вызов этого метода в форме nextByte() ведет себя точно так же, как вызов nextByte(radix), где radix - основание по умолчанию этого сканера.
- Возвращает:
- сканированное из ввода
byte - Выбрасывает:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне диапазона -
NoSuchElementException- если вход исчерпан -
IllegalStateException- если этот сканер закрыт
nextByte
public byte nextByte(int radix)
byte. Этот метод выбросит InputMismatchException, если следующий токен не может быть преобразован в действительное значение байта, как описано ниже. Если преобразование выполнено успешно, сканер переходит к следующему участку входных данных. Если следующий токен соответствует регулярному выражению Целое, определённому выше, то токен преобразуется в значение byte, как если бы были удалены все локально-зависимые префиксы, разделители групп и локально-зависимые суффиксы, а затем не-ASCII цифры были заменены на ASCII цифры с помощью Character.digit, добавлен знак минус (-) если присутствовали локально-зависимые префиксы и суффиксы, а затем полученная строка передана в Byte.parseByte со значением заданного основания.
Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет выброшено исключение IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения байта - Возвращает:
- сканированное
byteиз входных данных - Исключения:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Целое или находится вне допустимого диапазона -
NoSuchElementException- если входные данные исчерпаны -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
hasNextShort
public boolean hasNextShort()
nextShort(). Сканер не переходит к следующему участку входных данных.- Возвращает:
- true, если и только если следующий токен сканера является корректным значением short в стандартном основании
- Исключения:
-
IllegalStateException- если этот сканер закрыт
hasNextShort
public boolean hasNextShort(int radix)
nextShort(). Сканер не переходит к следующему участку входных данных. Если основание меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет выброшено исключение IllegalArgumentException.
- Параметры:
-
radix- основание, используемое для интерпретации токена как значения short - Возвращает:
- true, если и только если следующий токен сканера является корректным значением short в указанном основании
- Исключения:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если основание находится вне допустимого диапазона
nextShort
public short nextShort()
short. Вызов этого метода в форме nextShort() эквивалентен вызову nextShort(radix), где radix — стандартное основание этого сканера.
- Возвращает:
- сканированное
shortиз входных данных - Исключения:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Целое или находится вне допустимого диапазона -
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.
- Parameters:
-
radix- радикс, используемый для интерпретации токена как значения типа long - Returns:
- true тогда и только тогда, когда следующий токен этого сканера является допустимым значением типа long
- Throws:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если радикс находится вне допустимого диапазона
nextLong
public long nextLong()
long. Вызов этого метода в форме nextLong() ведет себя точно так же, как вызов nextLong(radix), где radix — это радикс по умолчанию этого сканера.
- Returns:
- сканированное из входных данных значение типа
long - Throws:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне допустимого диапазона -
NoSuchElementException- если вход исчерпан -
IllegalStateException- если этот сканер закрыт
nextLong
public long nextLong(int radix)
long. Этот метод бросит исключение InputMismatchException, если следующий токен не может быть преобразован в допустимое значение типа long, как описано ниже. Если преобразование успешно, сканер пропускает входные данные, которые соответствуют шаблону. Если следующий токен соответствует регулярному выражению Integer, определенному выше, то токен преобразуется в значение типа long, как если бы были удалены все локально-зависимые префиксы, разделители групп и локально-зависимые суффиксы, затем не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, префиксный знак минус (-) добавляется, если были присутствуют локально-зависимые префиксы и суффиксы отрицательных значений, и полученная строка передается методу Long.parseLong с заданным радиксом.
Если радикс меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.
- Parameters:
-
radix- радикс, используемый для интерпретации токена как значения типа long - Returns:
- сканированное из входных данных значение типа
long - Throws:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Integer или находится вне допустимого диапазона -
NoSuchElementException- если вход исчерпан -
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если радикс находится вне допустимого диапазона
hasNextFloat
public boolean hasNextFloat()
nextFloat(). Сканер не пропускает какой-либо ввод.- Returns:
- true, если и только если следующий токен этого сканера является допустимым значением типа float
- Throws:
-
IllegalStateException- если этот сканер закрыт
nextFloat
public float nextFloat()
float. Этот метод бросит исключение InputMismatchException, если следующий токен не может быть преобразован в допустимое значение типа float, как описано ниже. Если преобразование успешно, сканер пропускает входные данные, которые соответствуют шаблону. Если следующий токен соответствует регулярному выражению Float, определенному выше, то токен преобразуется в значение типа float, как если бы все локально-зависимые префиксы, разделители групп и локально-зависимые суффиксы были удалены, не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, префиксный знак минус (-) добавляется, если были присутствуют локально-зависимые префиксы и суффиксы отрицательных значений, и полученная строка передается методу Float.parseFloat. Если токен соответствует локализованным строкам NaN или infinity, то «Nan» или «Infinity» соответственно передаются методу Float.parseFloat.
- Returns:
- сканированное из входных данных значение типа
float - Throws:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Float или находится вне допустимого диапазона -
NoSuchElementException- если вход исчерпан -
IllegalStateException- если этот сканер закрыт
hasNextDouble
public boolean hasNextDouble()
nextDouble(). Сканер не пропускает какой-либо ввод.- Returns:
- true, если и только если следующий токен этого сканера является допустимым значением типа double
- Throws:
-
IllegalStateException- если этот сканер закрыт
nextDouble
public double nextDouble()
double. Этот метод бросит исключение InputMismatchException, если следующий токен не может быть преобразован в допустимое значение типа double. Если преобразование успешно, сканер пропускает входные данные, которые соответствуют шаблону. Если следующий токен соответствует регулярному выражению Float, определенному выше, то токен преобразуется в значение типа double, как если бы все локально-зависимые префиксы, разделители групп и локально-зависимые суффиксы были удалены, не-ASCII цифры были преобразованы в ASCII цифры с помощью Character.digit, префиксный знак минус (-) добавляется, если были присутствуют локально-зависимые префиксы и суффиксы отрицательных значений, и полученная строка передается методу Double.parseDouble. Если токен соответствует локализованным строкам NaN или infinity, то «Nan» или «Infinity» соответственно передаются методу Double.parseDouble.
- Returns:
- сканированное из входных данных значение типа
double - Throws:
-
InputMismatchException- если следующий токен не соответствует регулярному выражению Float или находится вне допустимого диапазона -
NoSuchElementException- если вход исчерпан -
IllegalStateException- если этот сканер закрыт
hasNextBigInteger
public boolean hasNextBigInteger()
BigInteger в радиксе по умолчанию с помощью метода nextBigInteger(). Сканер не пропускает какой-либо ввод.- Returns:
- true, если и только если следующий токен этого сканера является допустимым
BigInteger - Throws:
-
IllegalStateException- если этот сканер закрыт
hasNextBigInteger
public boolean hasNextBigInteger(int radix)
BigInteger в указанном радиксе с помощью метода nextBigInteger(). Сканер не пропускает какой-либо ввод. Если радикс меньше Character.MIN_RADIX или больше Character.MAX_RADIX, то будет брошено исключение IllegalArgumentException.
- Parameters:
-
radix- радикс, используемый для интерпретации токена как целого числа - Returns:
- true, если и только если следующий токен этого сканера является допустимым
BigInteger - Throws:
-
IllegalStateException- если этот сканер закрыт -
IllegalArgumentException- если радикс находится вне допустимого диапазона
nextBigInteger
public BigInteger nextBigInteger()
BigInteger. Вызов этого метода в форме nextBigInteger() ведет себя точно так же, как вызов nextBigInteger(radix), где radix — это радикс по умолчанию этого сканера.
- Returns:
- сканированное из входных данных значение типа
BigInteger - Throws:
-
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 является быстродействующим и, при наилучших усилиях, бросит исключение ConcurrentModificationException, если такие вызовы будут обнаружены во время выполнения потоковой обработки.
После завершения потоковой обработки, этот сканер остаётся в неопределённом состоянии и не может быть повторно использован.
Если этот сканер содержит ресурс, который необходимо освободить, этот сканер должен быть закрыт, либо вызовом метода close(), либо закрытием возвращаемого потока. IllegalStateException выбрасывается, если сканер закрыт, когда этот метод вызывается, или если этот сканер закрыт во время выполнения потоковой обработки.
Как и методы findWithinHorizon(), этот метод может блокироваться, ожидая дополнительного ввода, и он может буферизовать неограниченное количество ввода, ища совпадение.
- Примечание API:
- Например, следующий код прочитает файл и вернёт список всех последовательностей символов, состоящих из семи или более заглавных латинских букв:
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()); } - Параметры:
-
pattern- шаблон для поиска совпадений - Возвращает:
- последовательный поток результатов совпадений
- Исключение:
-
NullPointerException- если шаблон null -
IllegalStateException- если этот сканер закрыт - С:
- 9
findAll
public Stream<MatchResult> findAll(String patString)
scanner.findAll(Pattern.compile(patString))
- Параметры:
-
patString- строка шаблона - Возвращает:
- последовательный поток результатов совпадений
- Исключение:
-
NullPointerException- если patString null -
IllegalStateException- если этот сканер закрыт -
PatternSyntaxException- если синтаксис регулярного выражения некорректен - С:
- 9
- См. также:
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/Scanner.html