读取杂乱的CSV文件

时间:2018-12-12 20:59:59

标签: java

因此该程序应该读取您在TUI中输入的DanceName,读取两个csv文件,该文件遵循以下思想:DanceName(\ t)(任意数量的空格)Performer / groupName,(空格或无空格)Performer /组的名字。如果DanceName之后有一个groupName,则应该转到另一个CSV文件并读取groupName中的所有表演者。如果在逗号后面有一个空格,则表演者可以正常工作。但是,如果没有一个,它只会打印出groupName

public String listAllDancersIn(String dance) {
    // get CSV file for dances Data


    Set<String> dancesData = new TreeSet<>(getCSV("src/csvFiles/danceShowData_dances.csv"));
    String result = "";

    // for each line in dances csv file
    for (String line : dancesData) {

        // split into two sections - [0] is name of dance & [1] is dancers
        String[] splitByTab = line.split("\t");

        splitByTab[0] = splitByTab[0].trim();

        // if name of dance matches given dance name
        if (splitByTab[0].equals(dance)) {

            // split names of dancers into individual strings
            String[] separatedNames = splitByComma(splitByTab[1]);

            // iterate through names
            for (int i = 0; i < separatedNames.length; i++) {
                // append result with output of getDanceGroupMembers (and trim input)
                result += ", " + getDanceGroupMembers(separatedNames[i].trim());
            }
        }
    }

    // remove leading comma and space
    result = result.substring(2);

    return result;
}

public String[] splitByComma(String names) {
    return names.split(", ");
}

public String getDanceGroupMembers(String name) {
    // get dance group data

    Set<String> danceGroupsData = new TreeSet<>(getCSV("src/csvFiles/danceShowData_danceGroups.csv"));

    // result by default is just name of given
    String result = name;

    // iterate iterate
    for (String line : danceGroupsData) {
        String[] splitByTab = line.split("\t");

        // if, at any point, name of dance group is equal to given name
        if (splitByTab[0].equals(name) ) {
            // return names of dancers in group 
            result = getDanceGroupMembers(splitByTab[1]);
        }
    }

    return result;
}

1 个答案:

答案 0 :(得分:2)

  

如果在表演者后面有一个空格,那么它可以正常工作。   但是,如果没有一个,它只会打印出groupName。

那是因为你在做, names.split(", ");而非names.split(",");

您应该做的是

  1. 使用names.split(",");在逗号上分割
  2. 使用trim()修剪空白。