Java:String.Split在输入数字后停止录制

时间:2013-12-16 02:48:06

标签: java

背景:我正在尝试从我用excel制作的csv文件中读取。

我正在尝试阅读的一些示例行

Text,435,435,,,,,,,,,,,,,20,,,,,,,,,,,,,,,,,,,

我的代码是

BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
ArrayList<Item> itemList = new ArrayList<Item>();

try {
    br = new BufferedReader(new FileReader("/Items.csv"));
    br.readLine();
    while ((line = br.readLine()) != null) {

        // use comma as separator
        String[] stats = line.split(cvsSplitBy);

        for(int i =0; i<stats.length; i++){
            System.out.print(i + ",");
            System.out.print(stats[i] + "," + \n);
        }

这给出了我的String []的输出。但是这会产生

的输出
0,Text,1,435,2,435,3,,4,,5,,6,,7,,8,,9,,10,,11,,12,,13,,14,,15,20,

的输入
Text,435,435,,,,,,,,,,1800,,,,,,,,,,,,,,,,,,,,,,

给出:

0,Amplifying Tome,1,435,2,435,3,,4,,5,,6,,7,,8,,9,,10,,11,1800,

为什么我的数组会停在它找到的第一个数字处?

2 个答案:

答案 0 :(得分:0)

根据String.split(String) javadoc“结尾数组中不包含尾随空字符串”。

如果您知道确切的列数,可以使用带有正数的String.split(String,int)方法。

答案 1 :(得分:0)

如果您有多个,分隔数字,则需要将分隔符设置为一个或多个。试试:

String[] stats = line.split("[,]+"); <-- signifies one or more comma

在不使用+的情况下,正在发生的是将单个,作为分隔符读取,然后下一个,将作为String添加到数组中,然后是下一个, {1}}是分隔符,下一个,一个字符串,下一个,一个分隔符,下一个,一个字符串,依此类推。