Scanner クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。
[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>
このコードで同じ出力を生成できます。このコードでは、正規表現を使用して 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 DecimalFormatSymbols
dfs
から取得されます。
<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>(
Non0DigitDigit?
Digit?
<dd> (
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.Scanner
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
コンストラクター
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 |
このスキャナーの入力内の次のトークンを メソッドを使用して として解釈できる場合は |
HasNextBigInteger |
このスキャナーの入力の次のトークンが、 メソッドを使用して既定の基数で として |
HasNextBoolean |
文字列 "true|false" から作成された大文字と小文字を区別しないパターンを使用して、このスキャナーの入力の次のトークンをブール値として解釈できる場合は true を返します。 |
HasNextByte |
メソッドを使用して、このスキャナーの入力の次のトークンを既定の基数のバイト値として解釈できる場合は true を |
HasNextDouble |
このスキャナーの入力の次のトークンが メソッドを使用して二重値として解釈できる場合は true を |
HasNextFloat |
メソッドを使用して、このスキャナーの入力内の次のトークンを float 値として解釈できる場合は true を |
HasNextInt |
メソッドを使用して、このスキャナーの入力の次のトークンを既定の基数の int 値として解釈できる場合は true を |
HasNextLine |
このスキャナーの入力に別の行がある場合は true を返します。 |
HasNextLong |
メソッドを使用して、このスキャナーの入力の次のトークンを既定の基数の長い値として解釈できる場合は true を |
HasNextShort |
メソッドを使用して、このスキャナーの入力の次のトークンを既定の基数の短い値として解釈できる場合は true を |
JniIdentityHashCode |
正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。 (継承元 Object) |
JniPeerMembers |
正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。 |
PeerReference |
正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。 (継承元 Object) |
ThresholdClass |
この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 (継承元 Object) |
ThresholdType |
この API は Mono for 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) |
このスキャナーの入力内の次のトークンが、 メソッドを使用して指定した基数内で として |
InvokeHasNextByte(Int32) |
メソッドを使用して、このスキャナーの入力の次のトークンを、指定した基数のバイト値として解釈できる場合は true を |
InvokeHasNextInt(Int32) |
メソッドを使用して、このスキャナーの入力の次のトークンを、指定した基数の int 値として解釈できる場合は true を |
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() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 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() |
現在のスレッドが起動するまで待機します。通常<は、通知</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) |
正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。 |