Java - 读取CSV并将Object []值转换为String值

时间:2013-11-13 14:35:18

标签: java csv

我对Java很新,我遇到了下面的代码问题。下面的doAggregate方法是读取csv文件中的数据列。我希望能够检查字段[i]的值是否包含特殊字符和非转义引号,并在它们被追加之前从值中删除它们。代码为以下所示的错误:java.lang.Double无法强制转换为java.lang.String。所以听起来并非所有类型的字段都会转换为String值。有没有一种好方法来测试String是否是String?或者有更好的方法来解决这个问题吗?

public String doAggregate(Object[] fields) {
    if (ObjectUtils.isEmpty(fields)) {
        return "";
    }
    if (fields.length == 1) {
        return "\"" + ObjectUtils.nullSafeToString(fields[0]) + "\"";
    }
    String tmp_field_value;
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < fields.length; i++) {
        if (i > 0) {
            sb.append(getDelimiter());
        }
        sb.append("\"");
        //start new code
        tmp_field_value = (String) fields[i];
        //error on line below
        sb.append(getCleanUTF8String(tmp_field_value));
        //end new code
        //start old code
        //sb.append(fields[i]);
        //end old code
        sb.append("\"");
    }
    return sb.toString();
}

public String getCleanUTF8String(String dirtyString){
    String cleanString = "";
    try {

        byte[] cleanBytes = dirtyString.getBytes("UTF-8");
        cleanString = new String(cleanBytes, "UTF-8");
        cleanString = cleanString.replace("\"", "\\\"");
        cleanString = cleanString.replace("'", "\\'");
    } catch (UnsupportedEncodingException uee){
        System.out.println("*******ERROR********: Unable to remove non UTF-8 characters in string: |" + dirtyString + "| -- Java Error Message:" + uee.getMessage());
        //TODO - may need to revisit this next line, some additional character checks may need to take place if the character set exclusion fails. 
        cleanString = dirtyString;
    }

    return cleanString;
}

1 个答案:

答案 0 :(得分:3)

而不是像tmp_field_value = (String) fields[i]那样执行以下代码。

 if(fields[i]!=null){ 
     tmp_field_value =  fields[i].toString();
 }