我正在尝试通过使用“ \ 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个标题行和第一列。

10-07 21:50