Java プラットフォーム 1.2

java.text
インタフェース CharacterIterator

既知のサブインタフェースの一覧:
AttributedCharacterIterator
既知の実装クラスの一覧:
StringCharacterIterator

public abstract interface CharacterIterator
extends Cloneable

このインタフェースは、テキストにおける双方向の反復のプロトコルを定義します。反復子は、結合された文字シーケンスにおいて反復します。文字は、getBeginIndex() で返される値で始まり、getEndIndex()-1 で返される値まで続く値を使ってインデックス処理されます。

反復子は、有効範囲が getBeginIndex() 〜 getEndIndex() の現在の文字インデックスを維持します。値 getEndIndex() が含まれているのは、ゼロ長のテキスト範囲の操作を可能にするためと、歴史的な理由によります。現在のインデックスは、getIndex() を呼び出すことによって検索でき、setIndex()、first()、および last() を呼び出すことによって直接設定できます。

previous() メソッドと next() メソッドは繰り返し処理に使用されます。これらのメソッドは、getBeginIndex() 〜 getEndIndex() -1 の範囲から外れるように動くと、DONE を返すことにより、反復子がシーケンスの終わりに達したことを示します。また、ほかのメソッドから DONE が返された場合は、現在のインデックスがこの範囲外にあることを示します。

例:

テキストの始めから終わりの方向へたどります。

 public void traverseForward(CharacterIterator iter) {
     for(char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
         processChar(c);
     }
 }
 
テキストを終わりから始めの方向へ逆方向にたどります
 public void traverseBackward(CharacterIterator iter) {
     for(char c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {
         processChar(c);
     }
 }
 
指定されたテキストの位置から前方向と逆方向の両方へたどります。この例での notBoundary() の呼び出しは、その他の停止基準を表しています。
 public void traverseOut(CharacterIterator iter, int pos) {
     for (char c = iter.setIndex(pos);
              c != CharacterIterator.DONE && notBoundary(c);
              c = iter.next()) {
     }
     int end = iter.getIndex();
     for (char c = iter.setIndex(pos);
             c != CharacterIterator.DONE && notBoundary(c);
             c = iter.previous()) {
     }
     int start = iter.getIndex();
     processSection(start, end);
 }
 

関連項目:
StringCharacterIterator, AttributedCharacterIterator

フィールドの概要
static char DONE
          反復子がテキストの終わりか始めに達したときに返される定数です。
 
メソッドの概要
 Object clone()
          反復子のコピーを作成します。
 char current()
          現在位置 (getIndex() によって返される位置) にある文字を取得します。
 char first()
          位置を getBeginIndex() に設定して、その位置にある文字を返します。
 int getBeginIndex()
          テキストの開始インデックスを返します。
 int getEndIndex()
          テキストの終了インデックスを返します。
 int getIndex()
          現在のインデックスを返します。
 char last()
          位置を getEndIndex()-1 (テキストが空の場合は getEndIndex()) に設定して、その位置にある文字を返します。
 char next()
          反復子のインデックスを 1 増やし、新しいインデックスにある文字を返します。
 char previous()
          反復子のインデックスを 1 減らし、新しいインデックスにある文字を返します。
 char setIndex(int position)
          位置を指定されたテキストの位置に設定して、その文字を返します。
 

フィールドの詳細

DONE

public static final char DONE
反復子がテキストの終わりか始めに達したときに返される定数です。Unicode 2.0 標準によると、'¥¥uFFFF' は無効な Unicode 値であり、有効な Unicode 文字列で使用することはできません。
メソッドの詳細

first

public char first()
位置を getBeginIndex() に設定して、その位置にある文字を返します。
戻り値:
テキスト内の先頭文字。テキストが空の場合は DONE
関連項目:
getBeginIndex

last

public char last()
位置を getEndIndex()-1 (テキストが空の場合は getEndIndex()) に設定して、その位置にある文字を返します。
戻り値:
テキスト内の最後の文字。テキストが空の場合は DONE
関連項目:
getEndIndex

current

public char current()
現在位置 (getIndex() によって返される位置) にある文字を取得します。
戻り値:
現在位置にある文字。現在位置がテキストの終わりを過ぎている場合は DONE
関連項目:
getIndex

next

public char next()
反復子のインデックスを 1 増やし、新しいインデックスにある文字を返します。結果のインデックスが getEndIndex() より大きいか、それに等しい場合、現在のインデックスが getEndIndex() にリセットされ、値 DONE が返されます。
戻り値:
新しい位置にある文字。新しい位置がテキスト範囲の終わりを過ぎている場合は DONE

previous

public char previous()
反復子のインデックスを 1 減らし、新しいインデックスにある文字を返します。現在のインデックスが getBeginIndex() の場合、インデックスは getBeginIndex() のまま変わらず、値 DONE が返されます。
戻り値:
新しい位置にある文字。現在の位置が getBeginIndex() に等しい場合は DONE

setIndex

public char setIndex(int position)
位置を指定されたテキストの位置に設定して、その文字を返します。
パラメータ:
position - テキスト内の位置。この値は、getBeginIndex() 〜 getEndIndex() の範囲内になければならない。無効な値を指定すると、IllegalArgumentException がスローされる
戻り値:
指定された位置にある文字。指定された位置が getEndIndex() に等しい場合は DONE

getBeginIndex

public int getBeginIndex()
テキストの開始インデックスを返します。
戻り値:
テキストが始まる位置のインデックス

getEndIndex

public int getEndIndex()
テキストの終了インデックスを返します。このインデックスは、テキストの終わりの次の文字のインデックスです。
戻り値:
テキスト内の最後の文字の次のインデックス

getIndex

public int getIndex()
現在のインデックスを返します。
戻り値:
現在のインデックス

clone

public Object clone()
反復子のコピーを作成します。
戻り値:
反復子のコピー
オーバーライド:
クラス Object 内の clone

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.