語言

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
繼承
屬性
實作

備註

一個簡單的文字掃描器,能用正則表達式解析原始型態和字串。

A Scanner 會使用分隔符模式將輸入拆分成符號,預設與空白符相匹配。 所得的代幣可透過各種 next 方法轉換成不同類型的值。

例如,這段程式碼允許使用者從 : System.inblockquote 讀取一個數字<>

{@code
                Scanner sc = new Scanner(System.in);
                int i = sc.nextInt();
            }

</區塊引用>

再舉一個例子,這段程式碼允許 long 從檔案 myNumbers中的條目 : <blockquote 指派型別>

{@code
                 Scanner sc = new Scanner(new File("myNumbers"));
                 while (sc.hasNextLong()) {
                     long aLong = sc.nextLong();
                 }
            }

</區塊引用>

掃描器也可以使用除空白以外的分隔符。 此範例從字串中讀取多個項目: <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>

{@code
                1
                2
                red
                blue
            }

</區塊引用>

同樣的輸出也可用此程式碼產生,該程式碼使用正則表達式一次解析所有四個標記: <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();
            }

</區塊引用>

掃描器使用的「預設分隔符」>預設空白分隔符為 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 方法取得。

當 a Scanner 閉合時,若源實 java.io.Closeable 作介面,則會關閉輸入來源。

Scanner A 在沒有外部同步的情況下不適合多執行緒使用。

除非另有說明,將參數傳 null 入 a Scanner 的任何方法都會導致拋出 a NullPointerException

掃描器會預設將數字解讀為十進位,除非使用該 #useRadix 方法設定了不同的基數。 此 #reset 方法會將掃描器的基數值重置為 10 不論先前是否更改過。

<h2> 「localized-numbers」>本地化數字</h2>

此類實例能掃描標準格式及掃描器所在區域格式的數字。 掃描器的「初始區域」>初始區域是方法回傳 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>出現在正數之前的字串(可能為空), , 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 地方>NaN  <dd>代表浮點數值非數字的字串,  dfs.java.text.DecimalFormatSymbols#getNaN getNaN()<dt LocalInfinity>  <dd>代表浮點數無限大的字串,  dfs.java.text.DecimalFormatSymbols#getInfinity getInfinity()</dl></blockquote>

<h3> 「數字語法」>數字語法</h3>

可由此類實例解析為數字的字串,依以下正則表達式文法指定,其中 Rmax 是所用基數中最高的數字(例如 Rmax 在 10 進制中為 9)。

<dl><dt>NonAsciiDigit: <dd>一個非ASCII字元c,回 java.lang.Character#isDigit Character.isDigit(c) 傳s 沒錯

<dt>非0位數:<dd >[1-] |<>dt< 數字:>dd[0-] |<>dt<數:>dd(&nbsp;非0位數??<>    (&nbsp;LocalGroupSesolator數字數字)+ )<數字 數字 dt>詞: <dd>( (數字+ ) |GroupedNumeral)<dt>“Integer-regex”><i>Integer</i>:<dd>( [-+]? () )<詞 dd>|LocalPositivePrefixnumeralLocalPositiveSuffix<dd>|LocalNegativePrefixNumeralLocalNegativeSuffix<dt>DecimalNumeral: <dd><>dd|NumeralLocalDecimalSesolator*<>dd|LocalDecimalSesolator digit +<>dt<: >dd( [eE] [+-]?Digit+ )<dt>“Decimal-regex”><i>Decimal</i>:<dd>( [-+]?數指數? )<dd>|LocalPositivePrefixDecimalLocalPositiveSuffixExponent?<dd>|LocalNegativePrefixDecimalLocalNegativeSuffixExponent?<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>|nonNumberLocalPositiveSuffix<dd>|LocalNegativePrefixnonNumberLocalNegativeSuffix<dt>“Float-regex”><i>float</i>: <dd>十進位|十六進制Float|SignedNonNumber</dl>

上述正則表達式中空白空間不顯著。

已在1.5中新增。

Java 文件 java.util.Scanner

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

建構函式

名稱 Description
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 ,從指定字串掃描產生值。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
HasNext

如果該掃描器輸入中有其他標記,則回傳為真。

HasNextBigDecimal

如果掃描器輸入中的下一個標記能被解讀為使用 該BigDecimal方法的 ,#nextBigDecimal則回傳為 true。

HasNextBigInteger

若掃描器輸入中的下一個標記能透過該BigInteger方法解讀為預設基數中的 a#nextBigInteger,則返回 true。

HasNextBoolean

若掃描器輸入中的下一個標記能以大小寫不區分的模式(由字串「true|false」建立)解讀為布林值,則回傳真。

HasNextByte

若掃描器輸入中的下一個標記能以該方法解讀為預設基數 #nextByte 中的位元組值,則回傳為真。

HasNextDouble

若掃描器輸入中的下一個標記可用該 #nextDouble 方法解讀為雙重值,則回傳為真。

HasNextFloat

若掃描器輸入中的下一個標記可用該方法解讀為浮點數值 #nextFloat ,則返回為真。

HasNextInt

若掃描器輸入中的下一個標記能透過該 #nextInt 方法解讀為預設基數中的整數值,則回傳為真。

HasNextLine

如果掃描器輸入中還有另一行,則會回傳為真。

HasNextLong

若掃描器輸入中的下一個標記能被解讀為預設基數中的長值,則 #nextLong 回傳真。

HasNextShort

若掃描器輸入中的下一個標記能透過該 #nextShort 方法解釋為預設基數中的短值,則回傳為真。

JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

一個簡單的文字掃描器,能用正則表達式解析原始型態和字串。

(繼承來源 JavaObject)
JniPeerMembers

一個簡單的文字掃描器,能用正則表達式解析原始型態和字串。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

(繼承來源 Object)
ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

(繼承來源 Object)

方法

名稱 Description
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)

若下一個完整標記符合指定模式,則返回為真。

InvokeHasNext(String)

若下一個標記與由指定字串構造的模式相符,則回傳為真。

InvokeHasNextBigInteger(Int32)

若掃描器輸入中的下一個符號能被解讀為指定基數中的 a BigInteger ,則 #nextBigInteger 回傳真值。

InvokeHasNextByte(Int32)

若掃描器輸入中的下一個標記能透過該 #nextByte 方法解讀為指定基數中的位元組值,則回傳為真。

InvokeHasNextInt(Int32)

若掃描器輸入中的下一個標記能透過該 #nextInt 方法解讀為指定基數中的整數值,則返回為真。

InvokeHasNextLong(Int32)

若掃描器輸入中的下一個符號能被解讀為指定基數 #nextLong 中的長值,則回傳為真。

InvokeHasNextShort(Int32)

若掃描 #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()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 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>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)

明確介面實作

名稱 Description
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()

一個簡單的文字掃描器,能用正則表達式解析原始型態和字串。

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

一個簡單的文字掃描器,能用正則表達式解析原始型態和字串。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於