Scanner Класс

Определение

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

[Android.Runtime.Register("java/util/Scanner", DoNotGenerateAcw=true)]
public sealed class Scanner : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, 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
Атрибуты
Реализации

Комментарии

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

Объект 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>

Используемый сканером разделитель пробелов default-delimiter> по умолчанию распознается 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> "localized-numbers">Localized numbers</h2>

Экземпляр этого класса способен сканировать номера в стандартных форматах, а также в форматах языкового стандарта сканера. Начальный языковой стандарт сканера —> это значение, возвращаемое методом java.util.Locale#getDefault(Locale.Category) Locale.getDefault(Locale.Category.FORMAT) ; его можно изменить с помощью #useLocale useLocale() метода . Метод #reset сбрасывает значение языкового стандарта сканера до исходного языкового стандарта независимо от того, был ли он изменен ранее.

Локализованные форматы определяются с точки зрения следующих параметров, которые для определенного языкового стандарта берутся из объекта этого языкового стандарта, dfа также его объекта и java.text.DecimalFormatSymbols DecimalFormatSymbols . dfsjava.text.DecimalFormat DecimalFormat

<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-syntax">Синтаксис чисел</h3>

Строки, которые могут быть проанализированы в виде чисел экземпляром этого класса, задаются с точки зрения следующей грамматики регулярных выражений, где Rmax — самая высокая цифра в используемом радиксе (например, Rmax — 9 в основе 10).

<dl><dt>NonAsciiDigit: <dd>A не-ASCII-символ c, для которого java.lang.Character#isDigit Character.isDigit(c) возвращается  Истинный

<dt>Non0Digit: <dd>[1-Rmax] |NonASCIIDigit<dt>Digit: <dd>[0-Rmax] |NonASCIIDigit<dt>GroupedNumeral: <dd>(&nbsp;Non0DigitDigit??<dd>    (&nbsp;LocalGroupSeparatorDigitDigit)+ )<dt>Numeral: <dd( (>Digit+ ) |GroupedNumeral)<dt>"Integer-regex"><i>Integer</i>:<dd( [-+]? (>Numeral) )<dd|>LocalPositivePrefixNumeralLocalPositiveSuffix<dd>|LocalNegativePrefixNumeralLocalNegativeSuffix<dt>DecimalNumeral: <dd>Numeral<dd>|NumeralLocalDecimalSeparatorDigit*<dd>|LocalDecimalSeparatorDigit+<dt>Exponent: <dd>( [eE] [+-]?Digit+ )<dt>"Decimal-regex"><i>Decimal</i>:<dd>( [-+]?DecimalNumeralExponent? )<dd>|LocalPositivePrefixDecimalNumeralLocalPositiveSuffixExponent?<dd>|LocalNegativePrefixDecimalNumeralLocalNegativeSuffixExponent?<dt>HexFloat: <dd>[-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+ ([pP][-+]?[0-9]+)?<dt>NonNumber: <dd>NaN |LocalNan| Infinity |LocalInfinity<dt>SignedNonNumber: <dd>( [-+]?NonNumber)<dd>|LocalPositivePrefixNonNumberLocalPositiveSuffix<dd>|LocalNegativePrefixNonNumberLocalNegativeSuffix<dt>"Float-regex"><i>Float</i>: <dd>Decimal|HexFloat|SignedNonNumber</dl>

Пробелы не имеют значения в приведенных выше регулярных выражениях.

Добавлено в версии 1.5.

Документация по Java для java.util.Scanner.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.

Конструкторы

Scanner(File)

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

Scanner(File, Charset)

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

Scanner(File, String)

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

Scanner(IPath)

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

Scanner(IPath, Charset)

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

Scanner(IPath, String)

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

Scanner(IReadable)

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

Scanner(IReadableByteChannel)

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

Scanner(IReadableByteChannel, Charset)

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

Scanner(IReadableByteChannel, String)

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

Scanner(Stream)

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

Scanner(Stream, Charset)

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

Scanner(Stream, String)

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

HasNextLine

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

HasNextLong

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

HasNextShort

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

JniIdentityHashCode

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

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

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

PeerReference

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

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

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

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

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

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

Методы

Clone()

Создает и возвращает копию этого объекта.

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

Закрывает этот сканер.

Delimiter()

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

Dispose()

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

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

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

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

InvokeHasNextLong(Int32)

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

InvokeHasNextShort(Int32)

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

IoException()

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

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

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

Skip(String)

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

ToArray<T>()

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

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

Возвращает строковое представление объекта.

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

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

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

Задает указанный шаблон разделителя для этого сканера.

UseDelimiter(String)

Задает шаблон разделителя этого сканера на шаблон, созданный на основе указанного String.

UseLocale(Locale)

Задает языковой стандарт этого сканера в соответствии с указанным языковым стандартом.

UseRadix(Int32)

Задает заданный радикс этого сканера по умолчанию.

Wait()

Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.><

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

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

(Унаследовано от Object)
Wait(Int64, Int32)

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

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

Явные реализации интерфейса

IIterator.Next()

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

IJavaPeerable.Disposed()

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

(Унаследовано от Object)
IJavaPeerable.DisposeUnlessReferenced()

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

(Унаследовано от Object)
IJavaPeerable.Finalized()

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

(Унаследовано от Object)
IJavaPeerable.JniManagedPeerState

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

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

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

(Унаследовано от Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

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

(Унаследовано от Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

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

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

Методы расширения

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

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