言語

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>

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

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

スキャナーが InputMismatchExceptionをスローすると、スキャナーは例外の原因となったトークンを渡さないため、他のメソッドを介して取得またはスキップされる可能性があります。

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

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

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

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

特に説明がない限り、 null パラメーターを Scanner のメソッドに渡すと、 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 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>正の数の後に表示される文字列 (空の場合があります)、つまり、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>浮動小数点値の数値以外を表す文字列、つまり、>dfs.java.text.DecimalFormatSymbols#getNaN getNaN()<dt>LocalInfinity ><dd>浮動小数点値の無限大を表す文字列、つまり、>dfs.java.text.DecimalFormatSymbols#getInfinity getInfinity()</dl></blockquote>

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

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

<dl><dt>NonAsciiDigit: <dd>A 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)+ )<dt>Numeral: <dd>( (Digit+ ) |GroupedNumeral)<dt>"Integer-regex"><i>Integer</i>:<dd>( [-+]? (Numeral) )<dd>|LocalPositivePrefixNumeralLocalPositiveSuffix<dd>|LocalNegativePrefixNumeral LocalNegativeSuffix<dt>DecimalNumeral: <d>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ドキュメント。

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

コンストラクター

名前 説明
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

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

HasNextBigInteger

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

HasNextBoolean

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

HasNextByte

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

HasNextDouble

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

HasNextFloat

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

HasNextInt

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

HasNextLine

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

HasNextLong

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

HasNextShort

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

JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

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

(継承元 JavaObject)
JniPeerMembers

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

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
ThresholdClass

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

(継承元 Object)
ThresholdType

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

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

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

InvokeHasNextByte(Int32)

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

InvokeHasNextInt(Int32)

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

InvokeHasNextLong(Int32)

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

InvokeHasNextShort(Int32)

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

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)
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>notified</em> または <em>interrupted</em>。

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

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

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</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)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

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

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象