Module java.base
Package java.text

Interface 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);
}
自版本:
1.1
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final char
    当迭代器到达文本的末尾或开头时返回的常量。
  • Method Summary

    Modifier and Type
    Method
    Description
    clone()
    创建此迭代器的副本
    char
    获取当前位置的字符(由getIndex()返回)。
    char
    first()
    将位置设置为getBeginIndex()并返回该位置的字符。
    int
    返回文本的起始索引。
    int
    返回文本的结束索引。
    int
    返回当前索引。
    char
    last()
    将位置设置为getEndIndex()-1(如果文本为空,则为getEndIndex())并返回该位置的字符。
    char
    next()
    迭代器的索引增加一,并返回新索引处的字符。
    char
    迭代器的索引减少一,并返回新索引处的字符。
    char
    setIndex(int position)
    将位置设置为文本中的指定位置,并返回该字符。
  • Field Details

    • DONE

      static final char DONE
      当迭代器到达文本的末尾或开头时返回的常量。该值为'\\uFFFF',即“不是字符”值,不应出现在任何有效的Unicode字符串中。
      参见:
  • Method Details

    • first

      char first()
      将位置设置为getBeginIndex()并返回该位置的字符。
      返回:
      文本中的第一个字符,如果文本为空则返回DONE
      参见:
    • last

      char last()
      将位置设置为getEndIndex()-1(如果文本为空则为getEndIndex())并返回该位置的字符。
      返回:
      文本中的最后一个字符,如果文本为空则返回DONE
      参见:
    • current

      char current()
      获取当前位置的字符(由getIndex()返回)。
      返回:
      当前位置的字符,如果当前位置超出文本末尾则返回DONE。
      参见:
    • next

      char next()
      迭代器的索引增加一,并返回新索引处的字符。如果结果索引大于或等于getEndIndex(),则当前索引将重置为getEndIndex(),并返回DONE值。
      返回:
      新位置处的字符,如果新位置超出文本范围则返回DONE。
    • previous

      char previous()
      迭代器的索引减少一,并返回新索引处的字符。如果当前索引为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()
      创建此迭代器的副本
      返回:
      此迭代器的副本