背景:我正在尝试从我用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,
为什么我的数组会停在它找到的第一个数字处?
答案 0 :(得分:0)
根据String.split(String) javadoc“结尾数组中不包含尾随空字符串”。
如果您知道确切的列数,可以使用带有正数的String.split(String,int)方法。
答案 1 :(得分:0)
如果您有多个,
分隔数字,则需要将分隔符设置为一个或多个。试试:
String[] stats = line.split("[,]+"); <-- signifies one or more comma
在不使用+
的情况下,正在发生的是将单个,
作为分隔符读取,然后下一个,
将作为String添加到数组中,然后是下一个,
{1}}是分隔符,下一个,
一个字符串,下一个,
一个分隔符,下一个,
一个字符串,依此类推。