public interface CharacterIterator extends Cloneable
迭代器保持当前的字符索引,其有效范围是从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); }
Modifier and Type | Field and Description |
---|---|
static char |
DONE
当迭代器到达文本的结尾或开始时返回的常量。
|
Modifier and Type | Method and Description |
---|---|
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)
将位置设置为文本中的指定位置,并返回该字符。
|
static final char DONE
char first()
getBeginIndex()
char last()
getEndIndex()
char current()
getIndex()
char next()
char previous()
char setIndex(int position)
position
- 文本中的位置。
有效值的范围从getBeginIndex()到getEndIndex()。
如果提供了无效值,则会抛出IllegalArgumentException异常。
int getBeginIndex()
int getEndIndex()
int getIndex()
Object clone()