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>

このコードで同じ出力を生成できます。このコードでは、正規表現を使用して 4 つのトークンすべてを一度に解析します。 <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 メソッドとそのコンパニオン メソッド (や #hasNextIntなど#nextInt) は、最初に区切り記号パターンに一致する入力をスキップしてから、次のトークンを返そうとします。 メソッドと next() メソッドの両方hasNext()で、追加の入力の待機がブロックされる場合があります。 メソッド ブロックが hasNext() 、関連付けられている next() メソッドがブロックされるかどうかに対する接続を持たないかどうか。 メソッドは #tokens 、入力の待機をブロックすることもできます。

#findWithinHorizon findWithinHorizon()#skip skip()および #findAll findAll() の各メソッドは#findInLine findInLine()、区切り記号パターンとは独立して動作します。 これらのメソッドは、入力内の区切り記号に関係なく、指定されたパターンとの照合を試みます。したがって、区切り記号が関連しない特殊な状況で使用できます。 これらのメソッドは、より多くの入力の待機をブロックする場合があります。

スキャナーが を InputMismatchExceptionスローすると、スキャナーは例外の原因となったトークンを渡さないので、他のメソッドを使用して取得またはスキップできます。

区切りパターンの種類によっては、空のトークンが返される場合があります。 たとえば、このパターン "\\s+" は区切り記号の複数のインスタンスと一致するため、空のトークンを返しません。 区切りパターン "\\s" は、一度に 1 つの領域のみを渡すので、空のトークンを返す可能性があります。

スキャナーは、 インターフェイスを実装する任意のオブジェクトからテキストを java.lang.Readable 読み取ることができます。 基になる読み取り可能な メソッドの java.lang.Readable#read read() 呼び出しで が java.io.IOException スローされた場合、スキャナーは入力の末尾に達したと見なします。 基になる読み取り可能な によってスローされた最新 IOException の は、 メソッドを #ioException 使用して取得できます。

Scannerが閉じられると、ソースが インターフェイスを実装している場合、入力ソースがjava.io.Closeable閉じられます。

Scanner 、外部同期なしでマルチスレッドを使用しても安全ではありません。

特に言及しない限り、 のいずれかのメソッドScannerにパラメーターをnull渡すと、 がスローされますNullPointerException

スキャナーでは、 メソッドを使用して #useRadix 別の基数が設定されていない限り、数値は既定で 10 進数として解釈されます。 メソッドは #reset 、以前に変更されたかどうかに関係なく、スキャナーの基数 10 の値を にリセットします。

<h2> "localized-numbers">Localized numbers</h2>

このクラスのインスタンスは、標準形式とスキャナーのロケールの形式で数値をスキャンできます。 スキャナーの "initial-locale">initial locale は、 メソッドによって java.util.Locale#getDefault(Locale.Category) Locale.getDefault(Locale.Category.FORMAT) 返される値です。メソッドを #useLocale useLocale() 使用して変更できます。 メソッドは #reset 、以前に変更されたかどうかに関係なく、スキャナーのロケールの値を初期ロケールにリセットします。

ローカライズされた形式は、次のパラメーターの観点から定義されます。これは、特定のロケールに対して、そのロケールの java.text.DecimalFormat DecimalFormat オブジェクト、 df、および オブジェクト java.text.DecimalFormatSymbols DecimalFormatSymbolsdfsから取得されます。

<blockquote><dl><dt>LocalGroupSeparator  <dd>数千のグループを区切るために使用される文字、 つまり、 nbsp&。dfs.java.text.DecimalFormatSymbols#getGroupingSeparator getGroupingSeparator()<dt>LocalDecimalSeparator  <dd>小数点に使用される文字 、 つまり、 nbsp&。dfs.java.text.DecimalFormatSymbols#getDecimalSeparator getDecimalSeparator()<dt>LocalPositivePrefix  <dd>正の数値の前に表示される文字列 (空の場合があります) 、つまり、 nbsp&。df.java.text.DecimalFormat#getPositivePrefix getPositivePrefix()<dt>LocalPositiveSuffix  <dd>正の数値の後に表示される文字列 (空の場合があります) 、つまり、 nbsp&。df.java.text.DecimalFormat#getPositiveSuffix getPositiveSuffix()<dt>LocalNegativePrefix  <dd>負の数の前に表示される文字列 (空の場合があります) 、つまり、 nbsp&。df.java.text.DecimalFormat#getNegativePrefix getNegativePrefix()<dt>LocalNegativeSuffix  <dd>負の数の後に表示される文字列 (空の場合があります) 、つまり、 nbsp&。df.java.text.DecimalFormat#getNegativeSuffix getNegativeSuffix()<dt>LocalNaN  <dd>浮動小数点値の数値以外の 値を表 す文字列 (nbsp&)。dfs.java.text.DecimalFormatSymbols#getNaN getNaN()<dt>LocalInfinity  <dd>浮動小数点値の無限大を表す文字列、 つまり、 nbsp&。dfs.java.text.DecimalFormatSymbols#getInfinity getInfinity()</dl></blockquote>

<h3> "number-syntax">Number syntax</h3>

このクラスのインスタンスによって数値として解析できる文字列は、次の正規表現文法の観点から指定されます。ここで、Rmax は使用されている基数の中で最も大きい数字です (たとえば、Rmax は 10 の底で 9)。

<dl><dt>NonAsciiDigit: <dd>nbsp を返す java.lang.Character#isDigit Character.isDigit(c) ASCII 以外の文字 c&返します。True

<dt>Non0Digit: <dd>[1-Rmax] |NonASCIIDigit<dt>Digit: <dd>[0-Rmax] |NonASCIIDigit<dt>GroupedNumeral: <dd>(&nbsp;Non0DigitDigit?Digit?<dd>    (&nbsp;LocalGroupSeparatorDigitDigit Digit)+ )<dt>Numeral: <dd>( (Digit+ ) |GroupedNumeral)<dt>"Integer-regex"><i>Integer</i>:<dd>( [-+]? (Numeral) )<dd>|LocalPositivePrefixNumeralLocalPositiveSuffix<dd>|LocalNegativePrefix数字LocalNegativeSuffix<dt>DecimalNumeral: <dd>数字<dd>|数字LocalDecimalSeparatorDigit*<dd>|LocalDecimalSeparatorDigit+<dt>指数: <dd>( [eE] [+-]?Digit+ )<dt>"Decimal-regex"><i>Decimal</i>:<dd>( [-+]?DecimalNumeral指数? )<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.util.ScannerJava ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

コンストラクター

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

このスキャナーの入力内の次のトークンを メソッドを使用して として解釈できる場合は BigDecimal true を #nextBigDecimal 返します。

HasNextBigInteger

このスキャナーの入力の次のトークンが、 メソッドを使用して既定の基数で として BigInteger 解釈できる場合は true を #nextBigInteger 返します。

HasNextBoolean

文字列 "true|false" から作成された大文字と小文字を区別しないパターンを使用して、このスキャナーの入力の次のトークンをブール値として解釈できる場合は true を返します。

HasNextByte

メソッドを使用して、このスキャナーの入力の次のトークンを既定の基数のバイト値として解釈できる場合は true を #nextByte 返します。

HasNextDouble

このスキャナーの入力の次のトークンが メソッドを使用して二重値として解釈できる場合は true を #nextDouble 返します。

HasNextFloat

メソッドを使用して、このスキャナーの入力内の次のトークンを float 値として解釈できる場合は true を #nextFloat 返します。

HasNextInt

メソッドを使用して、このスキャナーの入力の次のトークンを既定の基数の int 値として解釈できる場合は true を #nextInt 返します。

HasNextLine

このスキャナーの入力に別の行がある場合は true を返します。

HasNextLong

メソッドを使用して、このスキャナーの入力の次のトークンを既定の基数の長い値として解釈できる場合は true を #nextLong 返します。

HasNextShort

メソッドを使用して、このスキャナーの入力の次のトークンを既定の基数の短い値として解釈できる場合は true を #nextShort 返します。

JniIdentityHashCode

正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。

(継承元 Object)
JniPeerMembers

正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。

PeerReference

正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。

(継承元 Object)
ThresholdClass

この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)
ThresholdType

この API は Mono for 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)

このスキャナーの入力内の次のトークンが、 メソッドを使用して指定した基数内で として BigInteger 解釈できる場合は true を #nextBigInteger 返します。

InvokeHasNextByte(Int32)

メソッドを使用して、このスキャナーの入力の次のトークンを、指定した基数のバイト値として解釈できる場合は true を #nextByte 返します。

InvokeHasNextInt(Int32)

メソッドを使用して、このスキャナーの入力の次のトークンを、指定した基数の int 値として解釈できる場合は 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()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 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()

現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。>

(継承元 Object)
Wait(Int64)

現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。

(継承元 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)

正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。

適用対象