Example usage for java.text CharacterIterator setIndex

List of usage examples for java.text CharacterIterator setIndex

Introduction

In this page you can find the example usage for java.text CharacterIterator setIndex.

Prototype

public char setIndex(int position);

Source Link

Document

Sets the position to the specified position in the text and returns that character.

Usage

From source file:Main.java

public static void main(String[] argv) throws Exception {
    CharacterIterator it = new StringCharacterIterator("abcd");

    char ch = it.first();
    ch = it.current();/*w w w.java 2  s  . c  o  m*/
    ch = it.next();
    ch = it.current();
    ch = it.last();
    int pos = it.getIndex();
    ch = it.next();
    pos = it.getIndex();
    ch = it.previous();
    ch = it.setIndex(1);
}

From source file:XmlValueEncoder.java

/**
 * {@inheritDoc}//from  www .  ja  va2  s  .  co  m
 *
 * @see org.jboss.dna.common.text.TextDecoder#decode(java.lang.String)
 */
public String decode(String encodedText) {
    if (encodedText == null)
        return null;
    StringBuilder sb = new StringBuilder();
    CharacterIterator iter = new StringCharacterIterator(encodedText);
    for (char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
        if (c == '&') {
            int index = iter.getIndex();

            do {
                c = iter.next();
            } while (c != CharacterIterator.DONE && c != ';');

            // We found a closing semicolon
            if (c == ';') {
                String s = encodedText.substring(index + 1, iter.getIndex());

                if (SPECIAL_ENTITIES.containsKey(s)) {
                    sb.append(SPECIAL_ENTITIES.get(s));
                    continue;

                }

                if (s.length() > 0 && s.charAt(0) == '#') {
                    try {
                        sb.append((char) Short.parseShort(s.substring(1, s.length())));
                        continue;
                    } catch (NumberFormatException nfe) {
                        // This is possible in malformed encodings, but let it fall through
                    }
                }
            }

            // Malformed encoding, restore state and pass poorly encoded data back
            c = '&';
            iter.setIndex(index);
        }

        sb.append(c);

    }
    return sb.toString();
}