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
разбивает входные данные на маркеры с помощью шаблона разделителя, который по умолчанию соответствует пробелам. Полученные маркеры затем можно преобразовать в значения различных типов с помощью различных 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
. dfs
java.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>(
Non0DigitDigit?
?
<dd> (
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(File, Charset) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
Scanner(File, String) |
Создает новый |
Scanner(IPath) |
Создает новый |
Scanner(IPath, Charset) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
Scanner(IPath, String) |
Создает новый |
Scanner(IReadable) |
Создает новый |
Scanner(IReadableByteChannel) |
Создает новый |
Scanner(IReadableByteChannel, Charset) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
Scanner(IReadableByteChannel, String) |
Создает новый |
Scanner(Stream) |
Создает новый |
Scanner(Stream, Charset) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
Scanner(Stream, String) |
Создает новый |
Scanner(String) |
Создает новый |
Свойства
Class |
Возвращает класс среды выполнения данного объекта |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
HasNext |
Возвращает значение true, если у этого сканера есть другой маркер во входных данных. |
HasNextBigDecimal |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как |
HasNextBigInteger |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как |
HasNextBoolean |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как логическое значение с помощью шаблона без учета регистра, созданного из строки "true|false". |
HasNextByte |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как байтовое значение в радиксе по умолчанию с помощью |
HasNextDouble |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как двойное |
HasNextFloat |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как значение с плавающей точкой с помощью |
HasNextInt |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как значение int в радиксе по умолчанию с помощью |
HasNextLine |
Возвращает значение true, если во входных данных этого сканера есть другая строка. |
HasNextLong |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как длинное значение в радиксе по умолчанию с помощью |
HasNextShort |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как короткое значение в радиксе по умолчанию с помощью |
JniIdentityHashCode |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от Object) |
JniPeerMembers |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |
PeerReference |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от Object) |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
Методы
Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
Close() |
Закрывает этот сканер. |
Delimiter() |
Возвращает объект , |
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, если следующий маркер во входных данных этого сканера можно интерпретировать как в |
InvokeHasNextByte(Int32) |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как байтовое значение в указанном радиксе |
InvokeHasNextInt(Int32) |
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как значение int в указанном радиксе |
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) |
Skip(Pattern) |
Пропускает входные данные, соответствующие указанному шаблону, игнорируя разделители. |
Skip(String) |
Пропускает входные данные, соответствующие шаблону, созданному из указанной строки. |
ToArray<T>() |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от Object) |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
UnregisterFromRuntime() |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. (Унаследовано от Object) |
UseDelimiter(Pattern) |
Задает указанный шаблон разделителя для этого сканера. |
UseDelimiter(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) |
Простой сканер текста, который может анализировать примитивные типы и строки с помощью регулярных выражений. |