应用场景时,java调用PYTHON脚本进行水质预测的模型训练,返回的未来10天的预测值为一个符串。需要对返回值的精度进行处理。
String dataDetail="1,2,3,,,,4,,,";
解析
/**
* 返回数据根据精度值进行处理
*/
public static String percisionDeal(String dataDetail,Integer precision) {
StringBuffer strBuf = new StringBuffer();
//需避免空字符被丢弃
List<String> list = Arrays.asList(dataDetail.split(","));
if(CollectionUtil.isNotEmpty(list)) {
for (String argValue : list) {
strBuf.append(fmStr);
strBuf.append(",");
}
return strBuf.subSequence(0, strBuf.length()-1).toString();
}
return dataDetail;
}
打印结果:最后的几个分隔符被丢弃了
1,2,3,,,,4
修改方法:
public static String percisionDeal(String dataDetail,Integer precision) {
StringBuffer strBuf = new StringBuffer();
//需避免空字符被丢弃 dataDetail.split(",",-1)
List<String> list = Arrays.asList(dataDetail.split(",",-1));
if(CollectionUtil.isNotEmpty(list)) {
for (String argValue : list) {
String fmStr = NumberFormatUtil.formatByScale(argValue, precision);
strBuf.append(fmStr);
strBuf.append(",");
}
return strBuf.subSequence(0, strBuf.length()-1).toString();
}
return dataDetail;
}
结论:
1.如果字符串最后一位有值,split(" ,")则没有区别,
2.如果最后n位都是切割符,split(" ,")不会继续切分,split(", ", -1)会继续切分