com.ibm.icu.impl.CSCharacterIterator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of icu4j Show documentation
Show all versions of icu4j Show documentation
International Component for Unicode for Java (ICU4J) is a mature, widely used Java library
providing Unicode and Globalization support
// © 2017 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
package com.ibm.icu.impl;
import java.text.CharacterIterator;
/**
* Implement the Java CharacterIterator interface on a CharSequence.
* Intended for internal use by ICU only.
*/
public class CSCharacterIterator implements CharacterIterator {
private int index;
private CharSequence seq;
/**
* Constructor.
* @param text The CharSequence to iterate over.
*/
public CSCharacterIterator(CharSequence text) {
if (text == null) {
throw new NullPointerException();
}
seq = text;
index = 0;
}
/** @{inheritDoc} */
@Override
public char first() {
index = 0;
return current();
}
/** @{inheritDoc} */
@Override
public char last() {
index = seq.length();
return previous();
}
/** @{inheritDoc} */
@Override
public char current() {
if (index == seq.length()) {
return DONE;
}
return seq.charAt(index);
}
/** @{inheritDoc} */
@Override
public char next() {
if (index < seq.length()) {
++index;
}
return current();
}
/** @{inheritDoc} */
@Override
public char previous() {
if (index == 0) {
return DONE;
}
--index;
return current();
}
/** @{inheritDoc} */
@Override
public char setIndex(int position) {
if (position < 0 || position > seq.length()) {
throw new IllegalArgumentException();
}
index = position;
return current();
}
/** @{inheritDoc} */
@Override
public int getBeginIndex() {
return 0;
}
/** @{inheritDoc} */
@Override
public int getEndIndex() {
return seq.length();
}
/** @{inheritDoc} */
@Override
public int getIndex() {
return index;
}
/** @{inheritDoc} */
@Override
public Object clone() {
CSCharacterIterator copy = new CSCharacterIterator(seq);
copy.setIndex(index);
return copy;
}
}