All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xavax.util.IterableStringTokenizer Maven / Gradle / Ivy

There is a newer version: 1.1.6
Show newest version
//
// Copyright 2011 by Xavax, Inc. All Rights Reserved.
// Use of this software is allowed under the Xavax Open Software License.
// http://www.xavax.com/xosl.html
//
package com.xavax.util;

import java.util.Iterator;
import java.util.StringTokenizer;

/**
 * IterableStringTokenizer wraps a StringTokenizer and makes it Iterable
 * so it can be used in for-each statements.
 */
public class IterableStringTokenizer implements Iterable {
  private final StringTokenizer tokenizer;

  /**
   * Construct an IterableStringTokenizer from the specified string.
   * @param string  the string to be tokenized.
   */
  public IterableStringTokenizer(final String string) {
    tokenizer = new StringTokenizer(string);
  }

  /**
   * Construct an IterableStringTokenizer from the specified string
   * using the specified delimiters.
   *
   * @param string  the string to be tokenized.
   * @param delim   the delimiters.
   */
  public IterableStringTokenizer(final String string, final String delim) {
    tokenizer = new StringTokenizer(string, delim);
  }

  /**
   * Construct an IterableStringTokenizer from the specified string
   * using the specified delimiters and return delimiters flag.
   *
   * @param string  the string to be tokenized.
   * @param delim   the delimiters.
   * @param returnDelims  true if delimiters should be returned as tokens.
   */
  public IterableStringTokenizer(final String string, final String delim,
				 final boolean returnDelims) {
    tokenizer = new StringTokenizer(string, delim, returnDelims);
  }

  /**
   * Returns the number of tokens.
   *
   * @return the number of tokens.
   */
  public int countTokens() {
    return tokenizer.countTokens();
  }

  /**
   * Returns true if this iterator has more tokens.
   *
   * @return true if this iterator has more tokens.
   */
  public boolean hasMoreTokens() {
    return tokenizer.hasMoreTokens();
  }

  /**
   * Returns the next token.
   *
   * @return the next token.
   */
  public String nextToken() {
    return tokenizer.nextToken();
  }

  /**
   * Returns the next token after changing delimiters.
   *
   * @param delim  the new delimiters.
   * @return the next token.
   */
  public String nextToken(final String delim) {
    return tokenizer.nextToken(delim);
  }

  /**
   * Returns an Iterator for the underlying Enumeration, thereby
   * making it Iterable.
   * 
   * @return an Iterator for this enumeration.
   */
  public Iterator iterator() {
    return new Iterator() {
      /**
       * Returns true if this iterator has more tokens.
       *
       * @return true if this iterator has more tokens.
       */
      @Override
      @SuppressWarnings("PMD.CommentRequired")
      public boolean hasNext() {
	return tokenizer.hasMoreElements();
      }

      /**
       * Returns the next token.
       *
       * @return the next token.
       */
      public String next() {
	return tokenizer.nextToken();
      }

      /**
       * This method of the Iterator interface is not supported.
       */
      public void remove() {
	throw new UnsupportedOperationException();
      }
    };
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy