Univocity 解析器:从此处调用函数不起作用:parserSettings.selectFields( *some_function* );
Univocity Parsers: Calling a function from here is not working: parserSettings.selectFields( *some_function* );
我正在使用 .csv 文件并想将由函数构造的字符串传递给:parserSettings.selectFields( function );
测试时,将函数返回的字符串直接粘贴到: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;
}
放置方式如下:
parserSettings.selectFields(buildColList());
非常感谢任何帮助,谢谢。
您需要 return 来自 buildColList
方法的数组,因为 parserSettings.selectFields()
方法不会拆分单个字符串。您当前的实施是选择一个大的 header 而不是多列。改变你的方法来做这样的事情:
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;
}
它应该可以工作。您可能需要调整我的解决方案以适应您的特定情况,因为我没有 运行 此代码。另外,我不确定你为什么要在列名周围附加引号,所以我删除了它们。
希望对您有所帮助。
我正在使用 .csv 文件并想将由函数构造的字符串传递给:parserSettings.selectFields( function );
测试时,将函数返回的字符串直接粘贴到: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;
}
放置方式如下:
parserSettings.selectFields(buildColList());
非常感谢任何帮助,谢谢。
您需要 return 来自 buildColList
方法的数组,因为 parserSettings.selectFields()
方法不会拆分单个字符串。您当前的实施是选择一个大的 header 而不是多列。改变你的方法来做这样的事情:
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;
}
它应该可以工作。您可能需要调整我的解决方案以适应您的特定情况,因为我没有 运行 此代码。另外,我不确定你为什么要在列名周围附加引号,所以我删除了它们。
希望对您有所帮助。