【问题标题】:Need to replace all commas in an AWS lambda using Java 8需要使用 Java 8 替换 AWS lambda 中的所有逗号
【发布时间】:2021-05-16 10:53:31
【问题描述】:

首先,我应该以我对这种语言的经验不足为首。我试过的所有东西都炸了。它似乎不喜欢 .replace 或 .replaceAll 反正我试过使用它。我用过模式和匹配器。不行。

我需要将此代码放在一个已经工作的类中,该类正在从查询中读取 ResultSet 并将其发送到 .csv 文件。这是我正在使用的代码。我最近的尝试你会在 cmets //所有 Nikki's mess 和 //end of Nikki's mess 之间看到。如果有人可以帮助阐明一些问题,我真的要疯了。看似简单的事情,语言障碍却是真实存在的!!

公共类 CSVUtil {

public static final String QUOTE = "\"";
public static final String DELIMETER = ",";

public static String convertToCsv(ResultSet rs) throws SQLException {
    StringBuilder csv = new StringBuilder();

    while (rs.next()) {

        // all Nikki's mess
        // between the comments
        
        String comments = rs.getString("ImageAnnotation");
        //Pattern pt = Pattern.compile(",");
        //Matcher match = pt.matcher(comments);
        //while(match.find()){
            comments = comments.replaceAll(",","");
        //}
        System.out.println(comments);
        
        //end of Nikki's mess

        csv.append(QUOTE).append(rs.getString(1)).append(QUOTE);

        for (int i = 2; i <= rs.getMetaData().getColumnCount(); i++) {
            csv.append(DELIMETER).append(QUOTE).append(rs.getString(i) == null ? "": rs.getString(i)).append(QUOTE);

        }

        csv.append(System.lineSeparator());
    }
    return csv.toString();
}

}

【问题讨论】:

  • 问题的本质与Lambda无关......它只是“如何在Java中替换字符串中的字符”......对于它有确定 i> 已经有数百个问题/答案。此外,您尝试解释问题的方式“我尝试过的所有东西都被炸毁了”和“它似乎不喜欢 .replace 或 .replaceAll”和“不行”真的一点帮助都没有。永远不要只说“它不起作用”,始终提供完整的错误日志/异常/等。
  • 我对在这里发帖犹豫不决。这是一个艰难的人群。我已经阅读了很多关于解决这个问题的问题,但没有一个是有效的,所以我认为在 AWS Lambda java 中完成了一些更具体的事情,因此标题包括它。为我的缺乏经验道歉。我唯一的错误日志是这样的:
  • “errorMessage”:“java.lang.NullPointerException”,“errorType”:“java.lang.NullPointerException”,“stackTrace”:[“com.sgk.redshift.ingestion.CSVUtil.convertToCsv( CSVUtil.java:54)”、“com.sgk.redshift.ingestion.RdsDataService.exportBMRDataTo(RdsDataService.java:80)”、“com.sgk.redshift.ingestion.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:27)”、 “com.sgk.redshift.ingestion.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:18)”
  • 除了我的第 54 行是错误发生的位置之外,并没有真正告诉我任何事情。这就是这一行 cmets = cmets.replaceAll(",","");
  • java.lang.NullPointerException -> stackoverflow.com/questions/218384/…

标签: java amazon-web-services replace aws-lambda replaceall


【解决方案1】:

我已经解决了。我将 replaceAll 添加到这一行:

csv.append(DELIMETER).append(QUOTE).append(rs.getString(i) == null ? "": rs.getString(i)).append(QUOTE);

csv.append(DELIMETER).append(QUOTE).append(rs.getString(i) == null ? "": rs.getString(i).replaceAll(",","")).append(报价);

看起来成功了。

【讨论】:

  • 您如何构建 Lambda Java 函数 - 您是通过 Eclipse 工具构建它还是在 Maven 项目中使用 Java 运行时 API(这是更好的方法)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多