Share via


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>

您可以使用此程式代碼產生相同的輸出,此程式代碼會使用正則表示式一次剖析所有四個令牌: <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>(&nbsp;Non0DigitDigit Digit??<dd>    (&nbsp;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 中新增。

java.util.ScannerJava 檔。

此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

建構函式

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#nextBigDecimal則傳回 true。

HasNextBigInteger

如果這個掃描器輸入中的下一個標記可以使用 方法解譯為 BigInteger 預設基數 #nextBigInteger 中的 ,則會傳回 true。

HasNextBoolean

如果這個掃描儀輸入中的下一個標記可以使用從字串 「true|false」 建立的不區分大小寫模式,將它解譯為布爾值,則傳回 true。

HasNextByte

如果這個掃描儀輸入中的下一個標記可以使用 方法解譯為預設基底 #nextByte 中的位元元組值,則會傳回 true。

HasNextDouble

如果這個掃描儀輸入中的下一個標記可以使用 方法解譯為雙精度浮點數, #nextDouble 則會傳回 true。

HasNextFloat

如果這個掃描器輸入中的下一個標記可以使用 方法解譯為浮點值 #nextFloat ,則會傳回 true。

HasNextInt

如果這個掃描儀輸入中的下一個標記可以使用 方法解譯為預設基數 #nextInt 中的int值,則會傳回 true。

HasNextLine

如果此掃描器的輸入中有另一行,則傳回 true。

HasNextLong

如果這個掃描器輸入中的下一個標記可以使用 方法解譯為預設基數 #nextLong 中的長值,則會傳回 true。

HasNextShort

如果這個掃描器輸入中的下一個標記可以使用 方法解譯為預設基數 #nextShort 中的簡短值,則會傳回 true。

JniIdentityHashCode

簡單的文字掃描器,可使用正則表達式來剖析基本類型與字串。

(繼承來源 Object)
JniPeerMembers

簡單的文字掃描器,可使用正則表達式來剖析基本類型與字串。

PeerReference

簡單的文字掃描器,可使用正則表達式來剖析基本類型與字串。

(繼承來源 Object)
ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

(繼承來源 Object)
ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

(繼承來源 Object)

方法

Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
Close()

關閉此掃描器。

Delimiter()

Pattern 回這個 Scanner 目前用來比對分隔符的 。

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)

如果這個掃描器輸入中的下一個標記可以使用 方法,將指定的基數#nextBigInteger解譯為 BigInteger ,則會傳回 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()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 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 <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)

簡單的文字掃描器,可使用正則表達式來剖析基本類型與字串。

適用於