我正在尝试通过使用“ \ n”作为分隔符将信息首先拆分为String [],然后再将其再次拆分为String [],但这一次使用“;”作为分隔符。
但是,我无法从第二次拆分中获取信息。
public static void initHashMap(){
String[] lijnen = readDefinitioncsv(definitioncsv).split("\n");
for (int i =2;i<lijnen.length;i++){
String[] detaillijn = lijnen[i].split(";");
// on the line below I get
//java.lang.ArrayIndexOutOfBoundsException: 1
int rood = Integer.parseInt(detaillijn[1]);
int groen = Integer.parseInt(detaillijn[2]);
int blauw = Integer.parseInt(detaillijn[3]);
String provincieNaam = detaillijn[4];
RGBProvince.put(new Color(rood,groen,blauw), provincieNaam);
}
}
感谢您的时间
最佳答案
String[] lijnen = readDefinitioncsv(definitioncsv).split("\r?\n");
for (int i =2;i<lijnen.length;i++){
String[] detaillijn = lijnen[i].split("[,;\t]");
if (detaillijn.length < 5) {
throw new IllegalArgumentException("Weiniger als 5 elementen: "
+ lijnen[i]);
}
这可以处理Windows行尾(
\r\n
,又名CR + LF)以及其他形式的CSV-因为;
似乎没有作用。可能文件以空行结尾,在这种情况下,您需要使用
continue
跳过该行。对于良好的顺序,索引从0开始;您似乎跳过了2个标题行和第一列。