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]リンク://タグ/文字列/[文字列]