StringTokenizer st=new StringTokenizer("dfs,fd,dfd,fd",",");
while (st.hasMoreTokens())
{
System.out.println(st.nextToken());
}

解决方案 »

  1.   

    /*
     * 创建日期 2003-12-24
     *
     * 更改所生成文件模板为
     * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
     */
    package com;/**
     * @author Administrator
     *
     * 更改所生成类型注释的模板为
     * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
     */import java.util.*; /** 使用 StringTokenizer 类 */
    public class StringSplit {
    public final static int MAXFIELDS = 150;
    public final static String DELIM = ",";
    /** 处理一个字符串,返回一个由各字段组成的数组 */
    public static String[] process(String line) {
    //System.out.println("待拆分的String为:"+line);
    String[] results = new String[MAXFIELDS];
    // 除非你要求StringTokenizer类,否则它会丢弃许多null标记    
    StringTokenizer st = new StringTokenizer(line, DELIM, true);
    int i = 0;
    // 获得每个token               
    while (st.hasMoreTokens()) {
    String s = st.nextToken();
    if (s.equals(DELIM)) {
    if (i++ >= MAXFIELDS)
    // 这有些乱:参照StrTokKemo4b,它使用一个Vector    
    // 允许任何数量的字段    
    throw new IllegalArgumentException(
    "Input line " + line + " has too many fields");
    continue;
    }
    results[i] = s;
    }
    int Arrlen=1;
    for(int m=0;m<MAXFIELDS;m++){
    if (results[m]==null){
    Arrlen=m;
    break;
    }
    }
    if (Arrlen<1){
    Arrlen=1;
    }

    String[] res=new String[Arrlen];
    if (Arrlen<2){
    res[0]=line;
    }else{
    for(int k=0;k<Arrlen;k++){
    res[k]=new String(results[k]);

    }
    }

    results=null;
    return res;
    }
    public static void printResults(String input, String[] outputs) {
    System.out.println("Input: " + input);
    for (int i = 0; i < outputs.length; i++)
    System.out.println("Output " + i + " was: " + outputs[i]);
    }
    public static void main(String[] a) {
    printResults("A,B,C,D", process("A,B,C,D"));
    printResults("A||C|D", process("A||C|D"));
    printResults("A|||D|E", process("A|||D|E"));
    }
    }