Javaでは、StringTokennizerクラスを使用して、文字列を定義された区切り文字で別のトークンに分割できます(スペースはデフォルトの区切り文字です)。ここに2つの `StringTokennizer`の例があります:

例1

`StringTokennizer`を使用して文字列を” space “と” comma “区切りで分割し、StringTokenizer要素を繰り返して1つずつ出力します。

package com.mkyong;

import java.util.StringTokenizer;

public class App {
    public static void main(String[]args) {

        String str = "This is String , split by StringTokenizer, created by mkyong";
        StringTokenizer st = new StringTokenizer(str);

        System.out.println("---- Split by space ------");
        while (st.hasMoreElements()) {
            System.out.println(st.nextElement());
        }

        System.out.println("---- Split by comma ',' ------");
        StringTokenizer st2 = new StringTokenizer(str, ",");

        while (st2.hasMoreElements()) {
            System.out.println(st2.nextElement());
        }
    }
}


出力

---- Split by space ------

この
は
文字列
、
スプリット
によって
StringTokenizer、
作成した
によって
ミキョン
----カンマで分割する '、------
これは文字列です
 StringTokenizerで分割
 mkyongによって作成されました

例2

csvファイルを読み込んでStringTokenizerを使用して文字列を “|”区切り文字で区切り、それを印刷します。


File:c:/test.csv

1| 3.29| mkyong
2| 4.345| eclipse

package com.mkyong;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;

public class ReadFile {

    public static void main(String[]args) {

    BufferedReader br = null;

    try {

        String line;

        br = new BufferedReader(new FileReader("c:/test.csv"));

        while ((line = br.readLine()) != null) {
           System.out.println(line);

           StringTokenizer stringTokenizer = new StringTokenizer(line, "|");

           while (stringTokenizer.hasMoreElements()) {

            Integer id = Integer.parseInt(stringTokenizer.nextElement().toString());
            Double price = Double.parseDouble(stringTokenizer.nextElement().toString());
            String username = stringTokenizer.nextElement().toString();

            StringBuilder sb = new StringBuilder();
            sb.append("\nId : " + id);
            sb.append("\nPrice : " + price);
            sb.append("\nUsername : " + username);
            sb.append("\n** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** \n");

            System.out.println(sb.toString());
           }
        }

        System.out.println("Done");

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)
                br.close();

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    }
}


出力

1| 3.29| mkyong

Id : 1
Price : 3.29
Username :  mkyong
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **

2 | 4.345 |日食

Id:2
価格:4.345
ユーザー名:eclipse
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **

完了

リファレンス

リンク://タグ/java/[java]リンク://タグ/文字列/[文字列]