Язык

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<>(&nbsp;Non0DigitDigit??<dd>  > > >(&nbsp;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 объект, который создает значения, отсканированные из указанного файла.

Scanner(File)

Создает новый Scanner объект, который создает значения, отсканированные из указанного файла.

Scanner(IPath, Charset)

Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений.

Scanner(IPath, String)

Создает новый Scanner объект, который создает значения, отсканированные из указанного файла.

Scanner(IPath)

Создает новый Scanner объект, который создает значения, отсканированные из указанного файла.

Scanner(IReadable)

Создает новый Scanner объект, который создает значения, отсканированные из указанного источника.

Scanner(IReadableByteChannel, Charset)

Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений.

Scanner(IReadableByteChannel, String)

Создает новый Scanner объект, который создает значения, отсканированные из указанного канала.

Scanner(IReadableByteChannel)

Создает новый Scanner объект, который создает значения, отсканированные из указанного канала.

Scanner(Stream, Charset)

Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений.

Scanner(Stream, String)

Создает новый Scanner объект, который создает значения, отсканированные из указанного входного потока.

Scanner(Stream)

Создает новый Scanner объект, который создает значения, отсканированные из указанного входного потока.

Scanner(String)

Создает новый Scanner объект, который создает значения, отсканированные из указанной строки.

Свойства

Имя. Описание
Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
HasNext

Возвращает значение true, если этот сканер имеет другой маркер во входных данных.

HasNextBigDecimal

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как BigDecimal метод.#nextBigDecimal

HasNextBigInteger

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как BigInteger в радиксе по умолчанию с помощью #nextBigInteger метода.

HasNextBoolean

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как логическое значение, используя нечувствительный шаблон регистра, созданный из строки "true|false".

HasNextByte

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как байтовое значение в радиксе по умолчанию с помощью #nextByte метода.

HasNextDouble

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как двойное #nextDouble значение с помощью метода.

HasNextFloat

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как плавающее значение с помощью #nextFloat метода.

HasNextInt

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как целое значение в радиксе по умолчанию с помощью #nextInt метода.

HasNextLine

Возвращает значение true, если в входных данных этого сканера есть другая строка.

HasNextLong

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как длинное значение в радиксе по умолчанию с помощью #nextLong метода.

HasNextShort

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как короткое значение в радиксе по умолчанию с помощью #nextShort метода.

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()

Возвращает значение, Pattern используемое Scanner в настоящее время для сопоставления разделителей.

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, если следующий маркер в входных данных этого сканера можно интерпретировать как BigInteger в указанном радиксе #nextBigInteger с помощью метода.

InvokeHasNextByte(Int32)

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как байтовое значение в указанном радиксе #nextByte с помощью метода.

InvokeHasNextInt(Int32)

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как целое значение в указанном радиксе #nextInt с помощью метода.

InvokeHasNextLong(Int32)

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как длинное значение в указанном радиксе #nextLong с помощью метода.

InvokeHasNextShort(Int32)

Возвращает значение true, если следующий маркер в входных данных этого сканера можно интерпретировать как короткое значение в указанном радиксе #nextShort с помощью метода.

IoException()

Возвращает последнее, созданное IOException базовым элементом Scannerэтой функцииReadable.

JavaFinalize()
Устаревшие.

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

(Унаследовано от Object)
Locale()

Возвращает языковой стандарт этого сканера.

Match()

Возвращает результат соответствия последней операции сканирования, выполняемой этим сканером.

Next()

Находит и возвращает следующий полный маркер из этого сканера.

Next(Pattern)

Возвращает следующий маркер, если он соответствует указанному шаблону.

Next(String)

Возвращает следующий маркер, если он соответствует шаблону, созданному из указанной строки.

NextBigDecimal()

Проверяет следующий маркер входных данных в виде java.math.BigDecimal BigDecimal.

NextBigInteger()

Проверяет следующий маркер входных данных в виде java.math.BigInteger BigInteger.

NextBigInteger(Int32)

Проверяет следующий маркер входных данных в виде java.math.BigInteger BigInteger.

NextBoolean()

Сканирует следующий маркер входных данных в логическое значение и возвращает это значение.

NextByte()

Проверяет следующий маркер входных данных в виде byte.

NextByte(Int32)

Проверяет следующий маркер входных данных в виде byte.

NextDouble()

Проверяет следующий маркер входных данных в виде double.

NextFloat()

Проверяет следующий маркер входных данных в виде float.

NextInt()

Проверяет следующий маркер входных данных в виде int.

NextInt(Int32)

Проверяет следующий маркер входных данных в виде int.

NextLine()

Перемещает этот сканер мимо текущей строки и возвращает входные данные, пропущенные.

NextLong()

Проверяет следующий маркер входных данных в виде long.

NextLong(Int32)

Проверяет следующий маркер входных данных в виде long.

NextShort()

Проверяет следующий маркер входных данных в виде short.

NextShort(Int32)

Проверяет следующий маркер входных данных в виде short.

Notify()

Пробуждение одного потока, ожидающего монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
Radix()

Возвращает радикс по умолчанию этого сканера.

Remove()

Операция удаления не поддерживается этой реализацией Iterator.

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)

Задает шаблон разделителя для шаблона, созданного из указанного 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 типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

Применяется к