如何消除循环拼接字符串时末尾出现的多余逗号?
解决循环拼接字符串末尾多余逗号的方案
针对你这段循环拼接字符串时末尾多逗号的问题,给你三个落地性强的解决思路:
思路1:用集合收集片段后统一拼接(推荐)
这种方法不仅能避免多余逗号,还能提升循环拼接字符串的效率(循环里直接拼字符串会频繁创建对象)。用List存每个需要拼接的片段,最后用String.join()一次性拼接:
// 先初始化三个集合存片段 List<String> columnList = new ArrayList<>(); List<String> selectList = new ArrayList<>(); List<String> selectList2 = new ArrayList<>(); while (stg_columns.next()) { String col = stg_columns.getColumnValueAsString(1); columnList.add(col); selectList.add("STG.\"" + col + "\""); selectList2.add("NULLIF(\"" + col + "\" ,'')"); } // 用逗号拼接所有片段,自动处理分隔符 String stg_column_list = String.join(",", columnList); String stg_column_select_list = String.join(",", selectList); String stg_column_select_list2 = String.join(", ", selectList2);
思路2:判断非首元素时才加逗号
在循环里先检查当前是否是第一个元素,只有不是第一个的时候,才在新内容前面加逗号,这样就不会在末尾留多余的:
String stg_column_list = ""; String stg_column_select_list = ""; String stg_column_select_list2 = ""; while (stg_columns.next()) { String col = stg_columns.getColumnValueAsString(1); // 处理第一个列表 if (!stg_column_list.isEmpty()) { stg_column_list += ","; } stg_column_list += col; // 处理第二个选择列表 if (!stg_column_select_list.isEmpty()) { stg_column_select_list += ","; } stg_column_select_list += "STG.\"" + col + "\""; // 处理第三个NULLIF列表 if (!stg_column_select_list2.isEmpty()) { stg_column_select_list2 += ", "; } stg_column_select_list2 += "NULLIF(\"" + col + "\" ,'')"; }
思路3:循环结束后截断末尾的逗号
如果不想改循环逻辑,可以在循环结束后,手动去掉最后一个逗号(注意要判断字符串不为空,避免索引越界):
// 原循环逻辑保留 while (stg_columns.next()) { stg_column_list += stg_columns.getColumnValueAsString(1); stg_column_list += ","; stg_column_select_list += "STG.\"" + stg_columns.getColumnValueAsString(1) + "\","; stg_column_select_list2 += "NULLIF(\"" + stg_columns.getColumnValueAsString(1) + "\" ,''), "; } // 循环结束后处理多余逗号 if (!stg_column_list.isEmpty()) { stg_column_list = stg_column_list.substring(0, stg_column_list.length() - 1); } if (!stg_column_select_list.isEmpty()) { stg_column_select_list = stg_column_select_list.substring(0, stg_column_select_list.length() - 1); } if (!stg_column_select_list2.isEmpty()) { // 注意第三个列表末尾是", ",所以要截掉2个字符 stg_column_select_list2 = stg_column_select_list2.substring(0, stg_column_select_list2.length() - 2); }
内容的提问来源于stack exchange,提问作者user20119813
相关产品推荐
相关产品推荐

