モジュール java.base
パッケージ java.util

クラスStringTokenizer

java.lang.Object
java.util.StringTokenizer
すべての実装されたインタフェース:
Enumeration<Object>

public class StringTokenizer extends Object implements Enumeration<Object>
StringTokenizerクラスを使用すると、アプリケーションで文字列をトークンに分割できます。 トークン化のメソッドは、StreamTokenizerクラスで使用されているメソッドよりもさらに簡単です。 StringTokenizerメソッドでは、識別子、数字、引用文字列は区別されません。また、コメントを認識してスキップすることもありません。

区切り文字(トークンを分ける文字)は、クラスの作成時、またはトークンを得るたびに指定できます。

StringTokenizerのインスタンスは、作成時のreturnDelimsフラグの値がtruefalseかによって、動作が異なります。

  • フラグがfalseの場合は、区切り文字はトークンを分けるだけのものと見なされる。 トークンは区切り文字でない文字が1個以上連続している部分である
  • フラグがtrueの場合は、区切り文字はそれ自体がトークンと見なされる。 トークンは、1個の区切り文字か、区切り文字でない文字が1個以上連続している部分である

StringTokenizerオブジェクトは内部的に、トークン化される文字列内の現在の位置を管理します。 いくつかのオペレーションは、この現在の位置を処理された文字の先に進めるものがあります。

トークンは、StringTokenizerオブジェクトを作成するのに使用された文字列の部分文字列を取得することによって返されます。

使用例を次に示します。 コード:

     StringTokenizer st = new StringTokenizer("this is a test");
     while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
     }
 

画面には次のように表示されます。

     this
     is
     a
     test
 

StringTokenizerは、互換性を維持する目的で保持されているレガシー・クラスであり、新規コードでは使用が推奨されていません。 この機能の使用を考えているなら、Stringsplitメソッドまたはjava.util.regexパッケージを代わりに使用することをお薦めします。

次の例は、String.splitメソッドを使用して文字列を基本的なトークンに分割する方法を示します。

     String[] result = "this is a test".split("\\s");
     for (int x=0; x<result.length; x++)
         System.out.println(result[x]);
 

画面には次のように表示されます。

     this
     is
     a
     test
 

導入されたバージョン:
1.0
関連項目:
StreamTokenizer
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    指定された文字列に対するStringTokenizerを作成します。
    StringTokenizer​(String str, String delim)
    指定された文字列に対するStringTokenizerを作成します。
    StringTokenizer​(String str, String delim, boolean returnDelims)
    指定された文字列に対するStringTokenizerを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    int
    例外を生成せずにこのトークナイザのnextTokenメソッドを呼び出せる回数を計算します。
    boolean
    hasMoreTokensメソッドと同じ値を返します。
    boolean
    トークナイザの文字列で利用できるトークンがまだあるかどうかを判定します。
    nextTokenメソッドと同じ値を返しますが、その宣言された戻り値はStringではなくObjectです。
    文字列トークナイザから次のトークンを返します。
    nextToken​(String delim)
    文字列トークナイザの文字列から次のトークンを返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    インタフェース java.util.Enumerationで宣言されたメソッド

    asIterator
  • コンストラクタの詳細

    • StringTokenizer

      public StringTokenizer(String str, String delim, boolean returnDelims)
      指定された文字列に対するStringTokenizerを作成します。 delim引数内のすべての文字は、トークンを区切るための区切り文字です。

      returnDelimsフラグがtrueの場合は、区切り文字もトークンとして返されます。 各区切り文字は長さ1の文字列として返されます。 フラグがfalseの場合は、区切り文字はスキップされ、トークンを分けるだけのものと見なされます。

      delimnullの場合、このコンストラクタは例外をスローしません。 ただし、結果となるStringTokenizerに対してほかのメソッドを呼び出そうとすると、NullPointerExceptionがスローされる場合があります。

      パラメータ:
      str - 解析される文字列
      delim - 区切り文字
      returnDelims - 区切り文字をトークンとして返すかどうかを示すフラグ。
      例外:
      NullPointerException - strがnullの場合
    • StringTokenizer

      public StringTokenizer(String str, String delim)
      指定された文字列に対するStringTokenizerを作成します。 delim引数内の文字は、トークンを区切るための区切り文字です。 区切り文字は、それ自体がトークンとして処理されることはありません。

      delimnullの場合、このコンストラクタは例外をスローしません。 ただし、結果となるStringTokenizerに対してほかのメソッドを呼び出そうとすると、NullPointerExceptionがスローされる場合があります。

      パラメータ:
      str - 解析される文字列
      delim - 区切り文字
      例外:
      NullPointerException - strがnullの場合
    • StringTokenizer

      public StringTokenizer(String str)
      指定された文字列に対するStringTokenizerを作成します。 トークナイザはデフォルトの区切り文字セットを使います。このセットは" \t\n\r\f"で、スペース文字、タブ文字、改行文字、復帰文字、および用紙送り文字から構成されます。 区切り文字は、それ自体がトークンとして処理されることはありません。
      パラメータ:
      str - 解析される文字列
      例外:
      NullPointerException - strがnullの場合
  • メソッドの詳細

    • hasMoreTokens

      public boolean hasMoreTokens()
      トークナイザの文字列で利用できるトークンがまだあるかどうかを判定します。 このメソッドがtrueを返す場合、それ以降の引数のないnextTokenへの呼出しは正常にトークンを返します。
      戻り値:
      文字列内の現在の位置の後ろに1つ以上のトークンがある場合だけtrue、そうでない場合はfalse
    • nextToken

      public String nextToken()
      文字列トークナイザから次のトークンを返します。
      戻り値:
      文字列トークナイザからの次のトークン
      例外:
      NoSuchElementException - このトークナイザの文字列にトークンが残っていない場合
    • nextToken

      public String nextToken(String delim)
      文字列トークナイザの文字列から次のトークンを返します。 最初に、このStringTokenizerオブジェクトが区切り文字と見なす文字のセットが、文字列delim内の文字になるように変更されます。 次に、文字列内の現在の位置の後ろにある次のトークンが返されます。 現在の位置は、認識されたトークンを越えて進みます。 指定された区切り文字の集合は、この呼出しのあともデフォルト値として使用されます。
      パラメータ:
      delim - 新しい区切り文字。
      戻り値:
      新しい区切り文字に切り替えたあとのトークン
      例外:
      NoSuchElementException - このトークナイザの文字列にトークンが残っていない場合
      NullPointerException - delimがnullの場合
    • hasMoreElements

      public boolean hasMoreElements()
      hasMoreTokensメソッドと同じ値を返します。 これを使用してこのクラスにEnumerationインタフェースを実装できます。
      定義:
      hasMoreElements、インタフェース: Enumeration<Object>
      戻り値:
      トークンがまだある場合はtrue、そうでない場合はfalse
      関連項目:
      Enumeration, hasMoreTokens()
    • nextElement

      public Object nextElement()
      nextTokenメソッドと同じ値を返しますが、その宣言された戻り値はStringではなくObjectです。 これを使用してこのクラスにEnumerationインタフェースを実装できます。
      定義:
      nextElement、インタフェース: Enumeration<Object>
      戻り値:
      文字列の次のトークン
      例外:
      NoSuchElementException - このトークナイザの文字列にトークンが残っていない場合
      関連項目:
      Enumeration, nextToken()
    • countTokens

      public int countTokens()
      例外を生成せずにこのトークナイザのnextTokenメソッドを呼び出せる回数を計算します。 現在の位置は進みません。
      戻り値:
      現在の区切り文字を適用したときに文字列に残っているトークンの数
      関連項目:
      nextToken()