Java Univocity解析器:从此处调用函数无效:parserSettings.selectFields(*some_function*);

Java Univocity解析器:从此处调用函数无效:parserSettings.selectFields(*some_function*);,java,csv,univocity,Java,Csv,Univocity,我正在使用一个.csv文件,希望将一个由函数构造的字符串传递给:parserSettings.selectFields(函数) 在测试期间,将函数返回的字符串直接粘贴到:parserSettings.selectFields(string);解析工作正常,但是,当使用函数时,解析不起作用,只输出空白 以下是函数: public String buildColList() { //Parse the qty col names string, which is a

我正在使用一个.csv文件,希望将一个由函数构造的字符串传递给:parserSettings.selectFields(函数)

在测试期间,将函数返回的字符串直接粘贴到:parserSettings.selectFields(string);解析工作正常,但是,当使用函数时,解析不起作用,只输出空白

以下是函数:

    public String buildColList() {
            //Parse the qty col names string, which is a comma separated string
            String qtyString = getQtyString();
            List<String> qtyCols = Arrays.asList(qtyString.split("\\s*,\\s*"));

            String colString = StringUtils.join(qtyCols.toArray(), "\"" +  ", " + "\"");

            String fullColString;

            fullColString = "\"" + getString1() + "\""  + ", " + "\"" + getString2() + "\"" + ", " + "\"" + colString + "\"" + ", " + "\"" + getString4 + "\"";

            return fullColString;

        }

非常感谢您的帮助。

您需要从
buildColList
方法返回一个数组,因为
parserSettings.selectFields()
方法不会拆分单个字符串。您当前的实现是选择一个大标题,而不是多列。更改方法以执行以下操作:

public String[] buildColList() {
        //Parse the qty col names string, which is a comma separated string
        String qtyString = getQtyString();
        List<String> qtyCols = Arrays.asList(qtyString.split("\\s*,\\s*"));

        String colString = StringUtils.join(qtyCols.toArray(), "\"" +  ", " + "\"");

        String[] fullColString = new String[]{getString1(), getString2(), colString, getString4};
        return fullColString;
}
public字符串[]buildColList(){
//解析qty col names字符串,它是一个逗号分隔的字符串
字符串qtyString=getQtyString();
List qtyCols=Arrays.asList(qtyString.split(“\\s*,\\s*”);
String colString=StringUtils.join(qtyCols.toArray(),“\”+,“+”\”;
String[]fullColString=新字符串[]{getString1(),getString2(),colString,getString4};
返回fullColString;
}
它应该会起作用。您可能需要调整我的解决方案以适合您的特定场景,因为我没有运行此代码。另外,我不知道为什么要在列名周围加引号,所以我删除了它们

希望这有帮助

public String[] buildColList() {
        //Parse the qty col names string, which is a comma separated string
        String qtyString = getQtyString();
        List<String> qtyCols = Arrays.asList(qtyString.split("\\s*,\\s*"));

        String colString = StringUtils.join(qtyCols.toArray(), "\"" +  ", " + "\"");

        String[] fullColString = new String[]{getString1(), getString2(), colString, getString4};
        return fullColString;
}