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>
您可以使用此程式代碼產生相同的輸出,此程式代碼會使用正則表示式一次剖析所有四個令牌: <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>
掃描器所使用的「預設分隔符」>預設空格符分隔符可辨識。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>
這個類別的實例能夠掃描標準格式的數位,以及掃描儀地區設定的格式。 掃描器的 「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>在正數之後出現的字串 (可能是空的) , 也就是 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>代表浮點值的非數位字串, 亦即& nbsp;dfs.
java.text.DecimalFormatSymbols#getNaN getNaN()
<dt>LocalInfinity (2 nbsp;<dd>代表浮點值的無限大字串, 也就是 dfs.
java.text.DecimalFormatSymbols#getInfinity getInfinity()
</dl></blockquote>
<h3> “number-syntax”>Number syntax</h3>
此類別實例可以剖析為數位的字串會以下列正則表達式文法來指定,其中 Rmax 是所使用基底 10) 中,Rmax 是 (所使用基底 10) 中的最高位數。
<dl><dt>NonAsciiDigit: <dd>會傳 java.lang.Character#isDigit Character.isDigit
(c)
回  的非 ASCII 字元 c;真
<dt>Non0Digit: <dd>[1-
Rmax] |
NonASCIIDigit<dt>Digit: <dd>[0-
Rmax] |
NonASCIIDigit<dt>GroupedNumeral: <dd>(
Non0DigitDigit Digit?
?
<dd> (
LocalGroupSeparatorDigit Digitdigitdt>Digit: <dd+ ) |
>( (
Digit<)+ )
GroupedNumeral<)
dt>“Integer-regex”><i>Integer</i>:<dd>( [-+]? (
Digit dd >|
LocalPositivePrefixDigit<) )
LocalPositiveSuffix <dd>|
LocalNegativePrefix數位LocalNegativeSuffix<dt>DecimalNumeral: dd>數位<dd>|
數位LocalDecimalSeparatorDigit*
<dd|
>LocalDecimalSeparatorDigit+
<dtExponent: <<dd>( [eE] [+-]?
Digit+ )
<dt>>“Decimal-regex”><i>Decimal</i>:<dd>( [-+]?
DecimalNumeralExponent? )
<dd>|
LocalPositivePrefixDecimalNumeralLocalPositiveSuffixExponent?
<dd>|
LocalNegativePrefixDecimalNumeralLocalNegativeSuffixExponent?
<dtHexFloat: 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>|
LocalNegativePrefixNonNumber LocalNegativeSuffix <dt>“Float-regex”><i Float</i>>: <dd>Decimal|
HexFloat|
|
SignedNonNumber</dl>
上述正則表達式中的空格符並不重要。
在 1.5 中新增。
此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
建構函式
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 |
如果這個掃描儀輸入中的下一個標記可以使用 方法解譯為預設基底 |
HasNextDouble |
如果這個掃描儀輸入中的下一個標記可以使用 方法解譯為雙精度浮點數, |
HasNextFloat |
如果這個掃描器輸入中的下一個標記可以使用 方法解譯為浮點值 |
HasNextInt |
如果這個掃描儀輸入中的下一個標記可以使用 方法解譯為預設基數 |
HasNextLine |
如果此掃描器的輸入中有另一行,則傳回 true。 |
HasNextLong |
如果這個掃描器輸入中的下一個標記可以使用 方法解譯為預設基數 |
HasNextShort |
如果這個掃描器輸入中的下一個標記可以使用 方法解譯為預設基數 |
JniIdentityHashCode |
簡單的文字掃描器,可使用正則表達式來剖析基本類型與字串。 (繼承來源 Object) |
JniPeerMembers |
簡單的文字掃描器,可使用正則表達式來剖析基本類型與字串。 |
PeerReference |
簡單的文字掃描器,可使用正則表達式來剖析基本類型與字串。 (繼承來源 Object) |
ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 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) |
如果這個掃描器輸入中的下一個標記可以使用 方法解譯為指定基數 |
InvokeHasNextInt(Int32) |
如果這個掃描儀輸入中的下一個標記可以使用 方法解譯為指定基數 |
InvokeHasNextLong(Int32) |
如果這個掃描器輸入中的下一個標記可以使用 方法解譯為指定基數 |
InvokeHasNextShort(Int32) |
如果這個掃描儀輸入中的下一個標記可以使用 方法解譯為指定基數 |
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() |
讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>。>< (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>,或直到經過一定數量的實時為止。<> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</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) |
簡單的文字掃描器,可使用正則表達式來剖析基本類型與字串。 |