com.ibm.icu.text.StringCharacterIterator 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
/*
*******************************************************************************
* Copyright (C) 1996-2006, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
// NOTE: This class is identical to java.text.StringCharacterIterator
// in JDK 1.2. It's copied here because the JDK 1.1 version of
// StringCharacterIterator has a bug that prevents it from working
// right with RuleBasedBreakIterator. This class is unnecessary
// when using RuleBasedBreakIterator with JDK 1.2.
package com.ibm.icu.text;
import java.text.CharacterIterator;
/**
* StringCharacterIterator
implements the
* CharacterIterater
protocol for a String
.
* The StringCharacterIterator
class iterates over the
* entire String
.
*
* @see CharacterIterator
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
///CLOVER:OFF
public final class StringCharacterIterator implements CharacterIterator
{
private String text;
private int begin;
private int end;
// invariant: begin <= pos <= end
private int pos;
/**
* Constructs an iterator with an initial index of 0.
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public StringCharacterIterator(String text)
{
this(text, 0);
}
/**
* Constructs an iterator with the specified initial index.
*
* @param text The String to be iterated over
* @param pos Initial iterator position
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public StringCharacterIterator(String text, int pos)
{
this(text, 0, text.length(), pos);
}
/**
* Constructs an iterator over the given range of the given string, with the
* index set at the specified position.
*
* @param text The String to be iterated over
* @param begin Index of the first character
* @param end Index of the character following the last character
* @param pos Initial iterator position
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public StringCharacterIterator(String text, int begin, int end, int pos) {
if (text == null) {
throw new NullPointerException();
}
this.text = text;
if (begin < 0 || begin > end || end > text.length()) {
throw new IllegalArgumentException("Invalid substring range");
}
if (pos < begin || pos > end) {
throw new IllegalArgumentException("Invalid position");
}
this.begin = begin;
this.end = end;
this.pos = pos;
}
/**
* Reset this iterator to point to a new string. This package-visible
* method is used by other java.text classes that want to avoid allocating
* new StringCharacterIterator objects every time their setText method
* is called.
*
* @param text The String to be iterated over
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public void setText(String text) {
if (text == null) {
throw new NullPointerException();
}
this.text = text;
this.begin = 0;
this.end = text.length();
this.pos = 0;
}
/**
* Implements CharacterIterator.first() for String.
* @see CharacterIterator#first
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public char first()
{
pos = begin;
return current();
}
/**
* Implements CharacterIterator.last() for String.
* @see CharacterIterator#last
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public char last()
{
if (end != begin) {
pos = end - 1;
} else {
pos = end;
}
return current();
}
/**
* Implements CharacterIterator.setIndex() for String.
* @see CharacterIterator#setIndex
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public char setIndex(int p)
{
if (p < begin || p > end) {
throw new IllegalArgumentException("Invalid index");
}
pos = p;
return current();
}
/**
* Implements CharacterIterator.current() for String.
* @see CharacterIterator#current
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public char current()
{
if (pos >= begin && pos < end) {
return text.charAt(pos);
}
else {
return DONE;
}
}
/**
* Implements CharacterIterator.next() for String.
* @see CharacterIterator#next
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public char next()
{
if (pos < end - 1) {
pos++;
return text.charAt(pos);
}
else {
pos = end;
return DONE;
}
}
/**
* Implements CharacterIterator.previous() for String.
* @see CharacterIterator#previous
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public char previous()
{
if (pos > begin) {
pos--;
return text.charAt(pos);
}
else {
return DONE;
}
}
/**
* Implements CharacterIterator.getBeginIndex() for String.
* @see CharacterIterator#getBeginIndex
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public int getBeginIndex()
{
return begin;
}
/**
* Implements CharacterIterator.getEndIndex() for String.
* @see CharacterIterator#getEndIndex
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public int getEndIndex()
{
return end;
}
/**
* Implements CharacterIterator.getIndex() for String.
* @see CharacterIterator#getIndex
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public int getIndex()
{
return pos;
}
/**
* Compares the equality of two StringCharacterIterator objects.
* @param obj the StringCharacterIterator object to be compared with.
* @return true if the given obj is the same as this
* StringCharacterIterator object; false otherwise.
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public boolean equals(Object obj)
{
if (this == obj) {
return true;
}
if (!(obj instanceof StringCharacterIterator)) {
return false;
}
StringCharacterIterator that = (StringCharacterIterator) obj;
if (hashCode() != that.hashCode()) {
return false;
}
if (!text.equals(that.text)) {
return false;
}
if (pos != that.pos || begin != that.begin || end != that.end) {
return false;
}
return true;
}
/**
* Computes a hashcode for this iterator.
* @return A hash code
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public int hashCode()
{
return text.hashCode() ^ pos ^ begin ^ end;
}
/**
* Creates a copy of this iterator.
* @return A copy of this
* @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
*/
public Object clone()
{
try {
StringCharacterIterator other
= (StringCharacterIterator) super.clone();
return other;
}
catch (CloneNotSupportedException e) {
throw new IllegalStateException();
}
}
}
///CLOVER:ON