home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / java / util / stringtokenizer.java < prev    next >
Text File  |  1995-08-11  |  4KB  |  137 lines

  1. /*
  2.  * @(#)StringTokenizer.java    1.8 95/01/31  
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package java.util;
  21.  
  22. import java.lang.*;
  23.  
  24. /**
  25.  * A class to tokenize a string.
  26.  * StringTokenizer is a class that controls simple linear tokenization
  27.  * of a string. The set of delimiters, which defaults to common whitespace
  28.  * characters, may be specified at creation time or on a per-token basis.<p>
  29.  *
  30.  * Example usage:
  31.  * <pre>
  32.  *    String s = "this is a test";
  33.  *    StringTokenizer st = new StringTokenizer(s);
  34.  *    while (st.hasMoreTokens()) {
  35.  *        println(st.nextToken());
  36.  *    }
  37.  * </pre>
  38.  * Prints the following on the console:
  39.  * <pre>
  40.  *    this
  41.  *    is
  42.  *    a
  43.  *    test
  44.  * </pre>
  45.  * @version     1.8, 31 Jan 1995
  46.  */
  47. public
  48. class StringTokenizer implements Enumeration {
  49.     private int currentPosition;
  50.     private int maxPosition;
  51.     private String str;
  52.     private String delimiters;
  53.  
  54.     /**
  55.      * Constructs a StringTokenizer on the specified string, using the
  56.      * specified delimiter set.
  57.      * @param str    the input string
  58.      * @param delim the delimiter string
  59.      */
  60.     public StringTokenizer(String str, String delim) {
  61.     currentPosition = 0;
  62.     this.str = str;
  63.     maxPosition = str.length();
  64.     delimiters = delim;
  65.     }
  66.  
  67.     /**
  68.      * Constructs a StringTokenizer on the specified string, using the
  69.      * default delimiter set (which is "\t\n\r").
  70.      */
  71.     public StringTokenizer(String str) {
  72.     this(str, " \t\n\r");
  73.     }
  74.  
  75.     /**
  76.      * Skip delimiters
  77.      */
  78.     private void skipDelimiters() {
  79.     while ((currentPosition < maxPosition) && (delimiters.indexOf(str.charAt(currentPosition)) >= 0)) {
  80.         currentPosition++;
  81.     }
  82.     }
  83.  
  84.     /**
  85.      * Returns true if more tokens exist.
  86.      */
  87.     public boolean hasMoreTokens() {
  88.     skipDelimiters();
  89.     return (currentPosition < maxPosition);
  90.     }
  91.  
  92.     /**
  93.      * Returns the next token of the string.
  94.      * @exception NoSuchElementException there are no more tokens in the string
  95.      */
  96.     public String nextToken() {
  97.     skipDelimiters();
  98.  
  99.     if (currentPosition >= maxPosition) {
  100.         throw new NoSuchElementException();
  101.     }
  102.  
  103.     int start = currentPosition;
  104.     while ((currentPosition < maxPosition) && (delimiters.indexOf(str.charAt(currentPosition)) < 0)) {
  105.         currentPosition++;
  106.     }
  107.     return str.substring(start, currentPosition);
  108.     }
  109.  
  110.     /**
  111.      * Returns the next token, after switching to the new delimiter set.
  112.      * The new delimiter set remains the default after this call.
  113.      * @param delim the new delimiters
  114.      */
  115.     public String nextToken(String delim) {
  116.     delimiters = delim;
  117.     return nextToken();
  118.     }
  119.  
  120.     /**
  121.      * Returns true if the Enumeration has more elements.
  122.      */
  123.     public boolean hasMoreElements() {
  124.     return hasMoreTokens();
  125.     }
  126.  
  127.     /**
  128.      * Returns the next element in the Enumeration.
  129.      * @exception NoSuchElementException There are no more elements in the enumeration
  130.      */
  131.     public Object nextElement() {
  132.     return nextToken();
  133.     }
  134. }
  135.  
  136.  
  137.