Интерфейс CharacterIterator
- Все суперинтерфейсы:
- Cloneable
- Все известные подинтерфейсы:
- AttributedCharacterIterator
- Все известные реализующие классы:
- Segment, StringCharacterIterator
public interface CharacterIterator extends Cloneable
Этот интерфейс определяет протокол для двусторонней итерации по тексту. Итератор итерирует по ограниченной последовательности символов. Символы индексируются значениями, начиная со значения, возвращаемого getBeginIndex(), и продолжая до значения, возвращаемого getEndIndex()-1.
Итераторы поддерживают текущий индекс символа, чья допустимая область значений — от getBeginIndex() до getEndIndex(); значение getEndIndex() включено, чтобы разрешить обработку текстовых диапазонов длиной ноль и по историческим причинам. Текущий индекс можно получить, вызвав getIndex(), и установить напрямую, вызвав setIndex(), first() и last().
Методы previous() и next() используются для итерации. Они возвращают DONE, если они вышли бы за пределы диапазона от getBeginIndex() до getEndIndex() -1, сигнализируя, что итератор достиг конца последовательности. 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() Увеличивает индекс итератора на единицу и возвращает символ в новой позиции. |
char |
previous() Уменьшает индекс итератора на единицу и возвращает символ в новой позиции. |
char |
setIndex(int position) Устанавливает позицию на указанную позицию в тексте и возвращает символ в этой позиции. |
Поля
DONE
static final char DONE
Константа, возвращаемая, когда итератор достиг либо конца, либо начала текста. Значение — '\\uFFFF', значение «не символ», которое не должно встречаться в любом допустимом строке Юникода.
- См. также:
- Значения константных полей
Методы
first
char first()
Устанавливает позицию на getBeginIndex() и возвращает символ в этой позиции.
- Возвращает:
- первый символ в тексте или DONE, если текст пуст
- См. также:
getBeginIndex()
last
char last()
Устанавливает позицию на getEndIndex()-1 (getEndIndex(), если текст пуст) и возвращает символ в этой позиции.
- Возвращает:
- последний символ в тексте или DONE, если текст пуст
- См. также:
getEndIndex()
current
char current()
Возвращает символ в текущей позиции (как возвращается getIndex()).
- Возвращает:
- символ в текущей позиции или DONE, если текущая позиция находится вне текста.
- См. также:
getIndex()
next
char next()
Увеличивает индекс итератора на единицу и возвращает символ в новой позиции. Если новый индекс больше или равен getEndIndex(), текущий индекс сбрасывается на getEndIndex(), и возвращается значение DONE.
- Возвращает:
- символ в новой позиции или DONE, если новая позиция находится вне диапазона текста.
previous
char previous()
Уменьшает индекс итератора на единицу и возвращает символ в новой позиции. Если текущий индекс равен getBeginIndex(), индекс остается на getBeginIndex(), и возвращается значение DONE.
- Возвращает:
- символ в новой позиции или DONE, если текущая позиция равна getBeginIndex().
setIndex
char setIndex(int position)
Устанавливает позицию на указанную позицию в тексте и возвращает символ в этой позиции.
- Параметры:
-
position- позиция в тексте. Допустимые значения находятся в диапазоне от getBeginIndex() до getEndIndex(). Если предоставлено недопустимое значение, выбрасывается IllegalArgumentException. - Возвращает:
- символ в заданной позиции или DONE, если заданная позиция равна getEndIndex()
getBeginIndex
int getBeginIndex()
Возвращает начальный индекс текста.
- Возвращает:
- индекс, с которого начинается текст.
getEndIndex
int getEndIndex()
Возвращает конечный индекс текста. Этот индекс — индекс первого символа, следующего за концом текста.
- Возвращает:
- индекс после последнего символа в тексте
getIndex
int getIndex()
Возвращает текущий индекс.
- Возвращает:
- текущий индекс.
clone
Object clone()
Создаёт копию этого итератора
- Возвращает:
- Копию этого
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.