Scanner Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений.
[Android.Runtime.Register("java/util/Scanner", DoNotGenerateAcw=true)]
public sealed class Scanner : Java.Lang.Object, IDisposable, Java.IO.ICloseable, Java.Util.IIterator
[<Android.Runtime.Register("java/util/Scanner", DoNotGenerateAcw=true)>]
type Scanner = class
inherit Object
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IIterator
- Наследование
- Атрибуты
- Реализации
Комментарии
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений.
Разрыв Scanner входных данных в маркеры с помощью шаблона разделителя, который по умолчанию соответствует пробелам. Затем полученные маркеры можно преобразовать в значения различных типов с помощью различных next методов.
Например, этот код позволяет пользователю считывать число из System.in: <blockquote>
{@code
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
}
</blockquote>
В другом примере этот код позволяет long назначать типы из записей в файле myNumbers: <blockquote>
{@code
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}
}
</blockquote>
Сканер также может использовать разделители, отличные от пробелов. В этом примере считывается несколько элементов из строки: <blockquote>
{@code
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();
}
</blockquote>
выводит следующие выходные данные: <blockquote>
{@code
1
2
red
blue
}
</blockquote>
Те же выходные данные можно создать с помощью этого кода, который использует регулярное выражение для синтаксического анализа всех четырех маркеров одновременно: <blockquote>
{@code
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();
}
</blockquote>
Разделитель> пробелов по умолчанию по умолчанию, используемый сканером Character#isWhitespace(char) Character.isWhitespace(), распознается. Метод #reset reset() сбрасывает значение разделителя сканера на разделитель пробелов по умолчанию независимо от того, было ли оно изменено ранее.
Операция сканирования может блокировать ожидание входных данных.
Методы #next и #hasNext методы-компаньоны (например #nextInt , и #hasNextInt) сначала пропускают любые входные данные, соответствующие шаблону разделителя, а затем пытаются вернуть следующий маркер.
hasNext() Оба next() метода могут блокировать ожидание дальнейших входных данных.
hasNext() Если блоки метода не имеют соединения с тем, будет ли его связанный next() метод блокироваться. Метод также может блокировать ожидание #tokens входных данных.
Методы #findInLine findInLine()#findWithinHorizon findWithinHorizon(), #skip skip()и #findAll findAll() методы работают независимо от шаблона разделителя. Эти методы будут пытаться соответствовать указанному шаблону без учета разделителей во входных данных, поэтому их можно использовать в особых обстоятельствах, когда разделители не имеют значения. Эти методы могут блокировать ожидание дополнительных входных данных.
Когда сканер создает InputMismatchExceptionисключение, средство проверки не передает маркер, вызвавшее исключение, чтобы его можно было получить или пропустить с помощью другого метода.
В зависимости от типа шаблона разделителя могут быть возвращены пустые маркеры. Например, шаблон "\\s+" не возвращает пустые маркеры, так как он соответствует нескольким экземплярам разделителя. Шаблон "\\s" разделителя может возвращать пустые маркеры, так как он передает только одно пространство за раз.
Сканер может считывать текст из любого объекта, реализующего java.lang.Readable интерфейс. Если вызов базового метода для чтения java.lang.Readable#read read() вызывает вызов java.io.IOException , средство проверки предполагает, что достигнут конец входных данных. Последние IOException , создаваемые базовым удобочитаемыми, можно получить с помощью #ioException метода.
При закрытии Scanner он закроет java.io.Closeable входной источник, если источник реализует интерфейс.
Небезопасно Scanner для многопоточного использования без внешней синхронизации.
Если не указано иное, передача параметра в любой null метод Scanner вызывает NullPointerException исключение.
Сканер по умолчанию интерпретирует числа как десятичные, если не задан другой радикс с помощью #useRadix метода. Метод #reset сбрасывает значение радикса 10 сканера независимо от того, было ли оно изменено ранее.
<h2> "локализованные числа">Локализованные числа</h2>
Экземпляр этого класса может сканировать числа в стандартных форматах, а также в форматах языкового стандарта сканера. Начальный языковой стандарт сканера> — это значение, java.util.Locale#getDefault(Locale.Category) Locale.getDefault(Locale.Category.FORMAT) возвращаемое методом. Его можно изменить с помощью #useLocale useLocale() метода. Метод #reset сбрасывает значение языкового стандарта сканера на начальный языковой стандарт независимо от того, было ли оно изменено ранее.
Локализованные форматы определяются с точки зрения следующих параметров, которые для определенного языкового стандарта взяты из объекта этого языкового java.text.DecimalFormat DecimalFormat стандарта, dfа также его и java.text.DecimalFormatSymbols DecimalFormatSymbols объекта dfs.
<blockquote><dl><dt>LocalGroupSeparator> ><dd>Символ, используемый для разделения тысяч групп, т.е.>;dfs.java.text.DecimalFormatSymbols#getGroupingSeparator getGroupingSeparator()<dt>LocalDecimalSeparator> ><dd>Символ, используемый для десятичной запятой, т.е.>;dfs.java.text.DecimalFormatSymbols#getDecimalSeparator getDecimalSeparator()<dt>LocalPositivePrefix> ><dd>Строка, которая отображается перед положительным числом (может быть пустой), т.е.>;df.java.text.DecimalFormat#getPositivePrefix getPositivePrefix()<dt>LocalPositiveSuffix> ><dd>Строка, которая отображается после положительного числа (может быть пустой), т.е.>;df.java.text.DecimalFormat#getPositiveSuffix getPositiveSuffix()<dt>LocalNegativePrefix> ><dd>Строка, которая отображается перед отрицательным числом (может быть пустой), т.е.>;df.java.text.DecimalFormat#getNegativePrefix getNegativePrefix()<dt>LocalNegativeSuffix> ><dd>Строка, которая отображается после отрицательного числа (может быть пустой), т.е.>;df.java.text.DecimalFormat#getNegativeSuffix getNegativeSuffix()<dt>LocalNaN> ><dd>Строка, представляющая не-число для значений с плавающей запятой, т.е.>;dfs.java.text.DecimalFormatSymbols#getNaN getNaN()<dt>LocalInfinity> ><dd>Строка, представляющая бесконечность значений с плавающей запятой, т. е. >;dfs.java.text.DecimalFormatSymbols#getInfinity getInfinity()</dl></blockquote>
<h3> "number-синтаксис">Синтаксис< чисел/h3>
Строки, которые можно проанализировать в виде чисел экземпляром этого класса, указываются с точки зрения следующей грамматики регулярного выражения, где Rmax является самой высокой цифрой в используемом радиксе (например, Rmax равен 9 в базовой 10).
<dl><dt>NonAsciiDigit: <dd>A не ASCII символ c, для которого java.lang.Character#isDigit Character.isDigit(c) возвращает>; True
<dt>Non0Digit: dd<>[1-dt] |Digit: dd<>Rmax<>[0-dt] |: <>dd<>( Non0DigitDigit??<dd> > > >( LocalGroupSeparator)+ )Digit <>: dd<>( (+ ) |dt)"Integer-regex"<i Integer>/i><>:<dd><>Numeral( [-+]? () )<dd>|LocalPositiveSuffixdd<>|LocalNegativePrefixNumeralLocalNegativeSuffix<dt>DecimalNumeral: dd<> dd<>|LocalDecimalSeparator Digit dd*<>|Digit+dt<: >dd<>( [eE] [+-]?+ )dt<>"Decimal-regex"><i Decimal>/i<>:<dd>( [-+]?Десятичныйэкспонент? )<dd>|LocalPositivePrefixDecimalNumeralLocalPositiveSuffixExponent?<dd>|LocalNegativePrefixDecimalNumeralLocalNegativeSuffixExponent?<dt>HexFloat: dd dt<>: [-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)?<dd><>NaN |LocalNan| Infinity |LocalInfinity<dt>SignedNonNumber: <dd>( [-+]?dd)<>|LocalPositivePrefix NonNumberLocalPositiveSuffix<dd>|LocalNegativePrefixNonNumberLocalNegativeSuffix<dt>"Float-regex"><i Float/i><>: <dd>Decimal|HexFloat|SignedNonNumber</dl>
Пробелы не являются значительными в указанных выше регулярных выражениях.
Добавлено в версии 1.5.
Java документации по java.util.Scanner.
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".
Конструкторы
| Имя. | Описание |
|---|---|
| Scanner(File, Charset) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
| Scanner(File, String) |
Создает новый |
| Scanner(File) |
Создает новый |
| Scanner(IPath, Charset) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
| Scanner(IPath, String) |
Создает новый |
| Scanner(IPath) |
Создает новый |
| Scanner(IReadable) |
Создает новый |
| Scanner(IReadableByteChannel, Charset) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
| Scanner(IReadableByteChannel, String) |
Создает новый |
| Scanner(IReadableByteChannel) |
Создает новый |
| Scanner(Stream, Charset) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
| Scanner(Stream, String) |
Создает новый |
| Scanner(Stream) |
Создает новый |
| Scanner(String) |
Создает новый |
Свойства
| Имя. | Описание |
|---|---|
| Class |
Возвращает класс среды выполнения этого |
| Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
| HasNext |
Возвращает значение true, если этот сканер имеет другой маркер во входных данных. |
| HasNextBigDecimal |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как |
| HasNextBigInteger |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как |
| HasNextBoolean |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как логическое значение, используя нечувствительный шаблон регистра, созданный из строки "true|false". |
| HasNextByte |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как байтовое значение в радиксе по умолчанию с помощью |
| HasNextDouble |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как двойное |
| HasNextFloat |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как плавающее значение с помощью |
| HasNextInt |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как целое значение в радиксе по умолчанию с помощью |
| HasNextLine |
Возвращает значение true, если в входных данных этого сканера есть другая строка. |
| HasNextLong |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как длинное значение в радиксе по умолчанию с помощью |
| HasNextShort |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как короткое значение в радиксе по умолчанию с помощью |
| JniIdentityHashCode |
Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия. (Унаследовано от Object) |
| JniManagedPeerState |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| JniPeerMembers |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
| PeerReference |
Возвращает ссылку на объект JNI для этого Java однорангового узла. (Унаследовано от Object) |
| ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
| ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
Методы
| Имя. | Описание |
|---|---|
| Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
| Close() |
Закрывает этот сканер. |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| Delimiter() |
Возвращает значение, |
| Dispose() |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| Dispose(Boolean) |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| DisposeUnlessReferenced() |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| Equals(Object) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| Equals(Object) |
Указывает, равен ли другой объект этому объекту. (Унаследовано от Object) |
| FindInLine(Pattern) |
Пытается найти следующее вхождение указанного шаблона, игнорирующего разделители. |
| FindInLine(String) |
Пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители. |
| FindWithinHorizon(Pattern, Int32) |
Пытается найти следующее вхождение указанного шаблона. |
| FindWithinHorizon(String, Int32) |
Пытается найти следующее вхождение шаблона, созданного из указанной строки, игнорируя разделители. |
| GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
| InvokeHasNext(Pattern) |
Возвращает значение true, если следующий полный маркер соответствует указанному шаблону. |
| InvokeHasNext(String) |
Возвращает значение true, если следующий токен соответствует шаблону, созданному из указанной строки. |
| InvokeHasNextBigInteger(Int32) |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как |
| InvokeHasNextByte(Int32) |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как байтовое значение в указанном радиксе |
| InvokeHasNextInt(Int32) |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как целое значение в указанном радиксе |
| InvokeHasNextLong(Int32) |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как длинное значение в указанном радиксе |
| InvokeHasNextShort(Int32) |
Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как короткое значение в указанном радиксе |
| IoException() |
Возвращает последнее, созданное |
| JavaFinalize() |
Устаревшие.
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
| Locale() |
Возвращает языковой стандарт этого сканера. |
| Match() |
Возвращает результат соответствия последней операции сканирования, выполняемой этим сканером. |
| Next() |
Находит и возвращает следующий полный маркер из этого сканера. |
| Next(Pattern) |
Возвращает следующий маркер, если он соответствует указанному шаблону. |
| Next(String) |
Возвращает следующий маркер, если он соответствует шаблону, созданному из указанной строки. |
| NextBigDecimal() |
Проверяет следующий маркер входных данных в виде |
| NextBigInteger() |
Проверяет следующий маркер входных данных в виде |
| NextBigInteger(Int32) |
Проверяет следующий маркер входных данных в виде |
| NextBoolean() |
Сканирует следующий маркер входных данных в логическое значение и возвращает это значение. |
| NextByte() |
Проверяет следующий маркер входных данных в виде |
| NextByte(Int32) |
Проверяет следующий маркер входных данных в виде |
| NextDouble() |
Проверяет следующий маркер входных данных в виде |
| NextFloat() |
Проверяет следующий маркер входных данных в виде |
| NextInt() |
Проверяет следующий маркер входных данных в виде |
| NextInt(Int32) |
Проверяет следующий маркер входных данных в виде |
| NextLine() |
Перемещает этот сканер мимо текущей строки и возвращает входные данные, пропущенные. |
| NextLong() |
Проверяет следующий маркер входных данных в виде |
| NextLong(Int32) |
Проверяет следующий маркер входных данных в виде |
| NextShort() |
Проверяет следующий маркер входных данных в виде |
| NextShort(Int32) |
Проверяет следующий маркер входных данных в виде |
| Notify() |
Пробуждение одного потока, ожидающего монитора этого объекта. (Унаследовано от Object) |
| NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
| Radix() |
Возвращает радикс по умолчанию этого сканера. |
| Remove() |
Операция удаления не поддерживается этой реализацией |
| Reset() |
Сбрасывает этот сканер. |
| SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| Skip(Pattern) |
Пропускает входные данные, соответствующие указанному шаблону, игнорируя разделители. |
| Skip(String) |
Пропускает входные данные, соответствующие шаблону, созданному из указанной строки. |
| ToArray<T>() |
Создает управляемый массив из этого Java оболочки массива. (Унаследовано от Object) |
| ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
| UnregisterFromRuntime() |
Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия. (Унаследовано от Object) |
| UseDelimiter(Pattern) |
Задает шаблон разделителя для указанного шаблона сканера. |
| UseDelimiter(String) |
Задает шаблон разделителя для шаблона, созданного из указанного |
| UseLocale(Locale) |
Задает языковой стандарт этого сканера для указанного языкового стандарта. |
| UseRadix(Int32) |
Задает для этого сканера по умолчанию радикс для указанного радикса. |
| Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>помощи уведомления</em> или <эм>прерванного</em>. (Унаследовано от Object) |
| Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя. | Описание |
|---|---|
| IIterator.Next() |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
| IJavaPeerable.Disposed() |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| IJavaPeerable.Finalized() |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
Методы расширения
| Имя. | Описание |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Возвращает имя JNI типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |