Java Univocity解析器:从此处调用函数无效:parserSettings.selectFields(*some_function*);
我正在使用一个.csv文件,希望将一个由函数构造的字符串传递给:parserSettings.selectFields(函数) 在测试期间,将函数返回的字符串直接粘贴到:parserSettings.selectFields(string);解析工作正常,但是,当使用函数时,解析不起作用,只输出空白 以下是函数: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
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;
}