改成这样:StringTokenizer lrowtoken="a, ,b,c, ,d";

解决方案 »

  1.   

    ■■
    但原字符串"a,,b,c,,d"就是这样的,我想获取出来的字符串也应当是空字符串,而不是空格啊,ls_col[1]="",不是ls_col[1]=" "
    ■■
      

  2.   

    StringTokenizer lrowtoken="a, ,b,c, ,d";
      

  3.   

    改成下边的试试:
    StringTokenizer lcoltoken=new StringTokenizer(lrowtoken.nextToken(),",",true);
      

  4.   

    import java.util.*;public class ST { public void Change(){


    StringTokenizer lcoltoken=new StringTokenizer("a,,b,c,,d",",",true);
      
    int num = lcoltoken.countTokens();
       String[] ls_col=new String[num];
       int li=0;
    String mid_1 = "",mid_2 = "";
       boolean flag = true;
    System.out.println("lcoltoken num " + num);
     
     
     
     
     
     
       while(lcoltoken.hasMoreTokens()){
        ls_col[li]=lcoltoken.nextToken();
    System.out.println("ls_col["+li+"] is " + ls_col[li]);   
    li++;
       }


    for(int i = 0 ; i < num; i++){
    if(!ls_col[i].equals(",")){
    System.out.println(ls_col[i]);
    i=i+1;
    }
    if(ls_col[i].equals(",") && ls_col[i+1].equals(",")) {
    System.out.println("");
    i=i+1;
    }

    if(ls_col[i].equals(",") && !ls_col[i+1].equals(",")){
    System.out.println(ls_col[i+1]);
    i=i+2;
    }

      
      
    }
    }
    public static void main(String[] arg){
    ST st = new ST();
    st.Change();
    }
    }
      

  5.   

    StringTokenizer 一点都不灵活. 建议用正则表达式之split
    import java.util.regex.*;Pattern p = Pattern.compile(",");String[] list = p.split("a,,b,c,,d");
      

  6.   

    再给你一个perfect的程序
    import java.util.*;
    public class ST{

    StringTokenizer sourcetoken = new StringTokenizer(",,,,a,,b,h,,,c,d,",",", true);

    public void Change(){
    int num = sourcetoken.countTokens();
    String[] los = new String[num];

    int li = 0;
    while(sourcetoken.hasMoreElements()){
    los[li] = sourcetoken.nextToken();
    System.out.println("los["+li+"] is "+los[li]);
    li++;
    }

    System.out.println();

    String[] tag = new String[num];
    for(int i = 0; i < num ; i++){
    if(los[i].equals(",")){
    if(i+1 < num){
    if(los[i+1].equals(",")){
    tag[i] = "";
    }else{
    continue;
    }
    }else{
    break;
    }
    }else{
    tag[i] = los[i];
    }

    }

    int real = 0;

    for(int j = 0; j < num ; j++){
    if(tag[j] != null){
    los[real]=tag[j];
    real++;
    }
    }

    for(int k = 0; k < real; k++){
    System.out.println("los["+k+"] is "+los[k]);
    }
    }

    public static void main(String[] arg){
    ST st = new ST();
    st.Change();
    }
    }
      

  7.   

    呵呵,其实用StringTokenizer和正则表达式效果一样的!!
    从程序上看正则表达式简洁一点!
      

  8.   

    public static String[] split(String s, String separator)
    {
    if(s == null)
    throw new NullPointerException("source String cannot be null");
    if(separator == null)
    throw new NullPointerException("separator cannot be null");
    if(separator.length() == 0)
    throw new IllegalArgumentException("separator cannot be empty"); ArrayList tmp = new ArrayList();
    int start = 0;
    int separatorLen = separator.length();
    int end = s.indexOf(separator);
    while(end != -1)
    {
    tmp.add(s.substring(start, end));
    start = end + separatorLen;
    end = s.indexOf(separator, start);
    }
    tmp.add(s.substring(start, s.length()));
    String[] result = new String[tmp.size()];
    tmp.toArray(result);
    return result;
    }public static void main(String[] args)
    {
    String[] result = split("a,,b,c,,d", ",");
    for(int i=0; i<result.length; i++)
    System.out.println(result[i]);
    }