JavaTM Platform
Standard Ed. 6

java.text
インタフェース CharacterIterator

すべてのスーパーインタフェース:
Cloneable
既知のサブインタフェースの一覧:
AttributedCharacterIterator
既知の実装クラスの一覧:
Segment, StringCharacterIterator

public 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

static final char DONE
反復子がテキストの終わりか始めに達したときに返される定数です。値は '\uFFFF' であり、有効な Unicode 文字列で使用できない「文字でない」値です。

関連項目:
定数フィールド値
メソッドの詳細

first

char first()
位置を getBeginIndex() に設定して、その位置にある文字を返します。

戻り値:
テキスト内の先頭文字。テキストが空の場合は DONE
関連項目:
getBeginIndex()

last

char last()
位置を getEndIndex()-1 (テキストが空の場合は getEndIndex()) に設定して、その位置にある文字を返します。

戻り値:
テキスト内の最後の文字。テキストが空の場合は DONE
関連項目:
getEndIndex()

current

char current()
現在位置 (getIndex() によって返される位置) にある文字を取得します。

戻り値:
現在位置にある文字。 現在位置がテキストの終わりを過ぎている場合は DONE
関連項目:
getIndex()

next

char next()
反復子のインデックスを 1 増やし、新しいインデックスにある文字を返します。結果のインデックスが getEndIndex() より大きいか、それに等しい場合、現在のインデックスが getEndIndex() にリセットされ、値 DONE が返されます。

戻り値:
新しい位置にある文字。 新しい位置がテキスト範囲の終わりを過ぎている場合は DONE

previous

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

戻り値:
新しい位置にある文字。 現在の位置が getBeginIndex() に等しい場合は DONE

setIndex

char setIndex(int position)
位置を指定されたテキストの位置に設定して、その文字を返します。

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

getBeginIndex

int getBeginIndex()
テキストの開始インデックスを返します。

戻り値:
テキストが始まる位置のインデックス

getEndIndex

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

戻り値:
テキスト内の最後の文字の次のインデックス

getIndex

int getIndex()
現在のインデックスを返します。

戻り値:
現在のインデックス

clone

Object clone()
反復子のコピーを作成します。

戻り値:
この反復子のコピー

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。