在逗号分隔的数据中查找空元素时出现问题

时间:2013-11-17 21:22:55

标签: java pattern-matching

import java.util.ArrayList;
import java.util.StringTokenizer;

public class test { 

public static void main(String args[]) {

    ArrayList<String> data = new ArrayList<String>();
    String s = "a,b,c,d,e,f,g";
    StringTokenizer st  = new StringTokenizer(s,",");

    while(st.hasMoreTokens()){
        data.add(st.nextToken());
    }
    System.out.println(data);

}

}

在CSV数据中查找空元素时出现问题 上述代码在数据完成时运行良好。如果缺少某些数据,则无法检测到空数据。

例如: 完成数据:a,b,c,d,e,f,g

如果删除a,d,e,g

新数据:,b,c ,,, f,

4个数据丢失!!

我需要一种方法将这些数据放入ArrayList中,空数据为空值或“”值

2 个答案:

答案 0 :(得分:0)

我确信有更优雅的解决方案,但一个简单的解决方案就是使用split()功能:

public static void main(String args[]) {

    ArrayList<String> data = new ArrayList<String>();
    String s = ",b,c,,,f,";

    //create an array of strings, using "," as a delimiter
    //if there is no letter between commas, an empty string will be 
    //placed in strings[] instead
    String[] strings = s.split(",", -1);

    for (String ss : strings) {
        data.add(ss);
    }

    System.out.println(data);
}

答案 1 :(得分:0)

您可以使用Guava Splitter执行此操作:

import com.google.common.base.Splitter;

public class Example
{  
    private static final Splitter SPLITTER = Splitter.on(",").trimResults();

    public List<String> split(String singleLine) {
        return SPLITTER.split(singleLine);        
    }
}