パッケージ org.opengion.fukurou.util

クラス CSVTokenizer

  • すべての実装されたインタフェース:
    Iterator<String>

    public class CSVTokenizer
    extends Object
    implements Iterator<String>
    CSVTokenizer は、CSVファイルのデータを順次分割する StringTokenizer と非常に 良く似たクラスです。 StringTokenizer では、デリミタが連続する場合も、1つのデリミタとするため、 データが存在しない場合の表現が出来ませんでした。(例えば、AA,BB,,DD など) 現在では、StringTokenizerの代わりに、String#split(String)が推奨されており、 これなら、区切り文字を正規表現で指定できるため、両方の形式に対応できます。 ただし、ダブルクオート等で囲われたデータを塊として処理することが出来ません。 ( AA,BB,"cc,dd",EE などを、「AA」「BB」「cc,dd」「EE」に分割したい、など) この、CSVTokenizer クラスでは、データが存在しない場合もトークンとして返します。 また、ダブルコーテーション("")で囲まれた範囲のデリミタは無視します。 ("") は、2重にすることで、エスケープできます。これにより、改行コードで分割した 1行の中に、("")が奇数の場合は、次の行は、続いていると判定できます。 ただし、デリミタとしては、文字列は指定できず、cher 1文字 しか指定できません。
    変更履歴:
    6.4.5.1 (2016/04/28) Iteratorインタフェース化。
    バージョン
    4.0
    作成者
    Kazuhiko Hasegawa
    導入されたバージョン:
    JDK5.0,
    • コンストラクタの概要

      コンストラクタ 
      コンストラクタ 説明
      CSVTokenizer​(String str)
      CSV形式の 文字列を解析する CSVTokenizer のインスタンスを作成する。
      CSVTokenizer​(String str, char delim)
      CSV形式の 文字列を解析する CSVTokenizer のインスタンスを作成する。
      CSVTokenizer​(String str, char delim, boolean inQuote)
      CSV形式の 文字列を解析する CSVTokenizer のインスタンスを作成する。
    • コンストラクタの詳細

      • CSVTokenizer

        public CSVTokenizer​(String str,
                            char delim,
                            boolean inQuote)
        CSV形式の 文字列を解析する CSVTokenizer のインスタンスを作成する。
        パラメータ:
        str - CSV形式の文字列 改行コードを含まない。
        delim - 区切り文字(1文字のみ指定可)
        inQuote - クオート処理を行うかどうか [true:行う/false:行わない]
      • CSVTokenizer

        public CSVTokenizer​(String str,
                            char delim)
        CSV形式の 文字列を解析する CSVTokenizer のインスタンスを作成する。 inQuote=true を初期値設定されます。
        パラメータ:
        str - CSV形式の文字列 改行コードを含まない。
        delim - 区切り文字(1文字のみ指定可)
        変更履歴:
        6.4.5.1 (2016/04/28) Iteratorインタフェース化。
      • CSVTokenizer

        public CSVTokenizer​(String str)
        CSV形式の 文字列を解析する CSVTokenizer のインスタンスを作成する。 delim=',' , inQuote=true を初期値設定されます。
        パラメータ:
        str - CSV形式の文字列 改行コードを含まない。
    • メソッドの詳細

      • hasNext

        public boolean hasNext()
        トークナイザの文字列で利用できるトークンがまだあるかどうかを判定します。 このメソッドが true を返す場合、それ以降の引数のない next() への 呼び出しは適切にトークンを返します。
        定義:
        hasNext インタフェース内 Iterator<String>
        戻り値:
        文字列内の現在の位置の後ろに 1 つ以上のトークンがある場合だけ true、そうでない場合は false
        変更履歴:
        6.4.5.1 (2016/04/28) Iteratorインタフェース化。
      • next

        public String next()
        文字列トークナイザから次のトークンを返します。
        定義:
        next インタフェース内 Iterator<String>
        戻り値:
        文字列トークナイザからの次のトークン
        例外:
        NoSuchElementException - トークナイザの文字列にトークンが残っていない場合
        変更履歴:
        5.2.0.0 (2010/09/01) トークンの前後が '"'である場合、"で囲われた文字列中の""は"に変換します。, 6.4.5.1 (2016/04/28) Iteratorインタフェース化。
      • countTokens

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

        public String toString()
        インスタンスの文字列表現を返す。
        オーバーライド:
        toString クラス内 Object
        戻り値:
        インスタンスの文字列表現。
        このメソッドは、nullを返しません