当前位置: 首页 > 面试题库 >

从集合/数组/列表创建逗号分隔的字符串的最复杂的方法?

慕朝明
2023-03-14
问题内容

在使用数据库的过程中,我注意到我写了查询字符串,并且在此字符串中,我必须对列表/数组/集合的where子句施加一些限制。应该看起来像这样:

select * from customer 
where customer.id in (34, 26, ..., 2);

您可以通过将其简化为以下问题来简化此问题:您具有字符串集合,并且只想在一个字符串中创建一个用逗号分隔的字符串列表。

到目前为止,我使用的方法是这样的:

String result = "";
boolean first = true;
for(String string : collectionOfStrings) {
    if(first) {
        result+=string;
        first=false;
    } else {
        result+=","+string;
    }
}

但这就像您看到的非常难看。您不会一眼就看到发生了什么,尤其是当构造的字符串(如每个SQL查询)变得复杂时。

您的(更多)优雅方式是什么?


问题答案:

注意:这个答案在11年前写的时候是不错的,但是现在有更好的选择可以更清晰地在一行中执行此操作,无论是仅使用Java内置类还是使用实用程序库。请参阅下面的其他答案。

由于字符串是不可变的,因此如果要在html" target="_blank">代码中更改String,则可能要使用StringBuilder类。

可以将StringBuilder类视为一个可变的String对象,当其内容更改时,该对象分配更多的内存。

通过处理 多余的结尾逗号 ,可以更清楚,更有效地写出问题中的原始建议:

    StringBuilder result = new StringBuilder();
    for(String string : collectionOfStrings) {
        result.append(string);
        result.append(",");
    }
    return result.length() > 0 ? result.substring(0, result.length() - 1): "";


 类似资料:
  • 问题内容: 你最好采用哪种方法来连接序列中的字符串,以便在每两个连续对之间添加一个逗号。也就是说,例如,你如何映射到(案例和该分别映射到和。) 我通常会使用类似的东西,但也会感到有些不满意。 问题答案: 如果列表包含数字,则此功能将无效。 并且如果列表包含非字符串类型(such as integers, floats, bools, None),则执行以下操作:

  • 问题内容: 我知道如何使用foreach遍历数组的项并附加逗号,但是必须取下最后的逗号总是很痛苦的。有没有简便的PHP方式? 最终我想要 问题答案: 您想为此使用爆破。 即: 有一种附加逗号而不尾随逗号的方法。如果您必须同时进行其他操作,则需要这样做。例如,也许您想引用每个水果,然后将它们全部用逗号分隔: 另外,如果您只是按照“正常”的方式在每个项目后面添加逗号(就像您以前做过的事情一样),并且您

  • 问题内容: 我有一个像 我想把它分成那些字符串 如果我简单地打电话给我,那么在修剪之后我会得到不同的结果,因为在某些字符串中,例如,仍然有一个逗号。但我不想放在方括号中。有解决这个问题的优雅方法吗? 问题答案: 假设和没有嵌套和未转义。您可以使用以下方式进行拆分: 正则演示 如果逗号后面没有非圆括号和,则将匹配逗号,从而忽略和中的逗号。

  • 问题内容: 这是当前结果,可以每天更改 我需要帮助的是在下面实现此结果。 问题答案: 使用:

  • 问题内容: 我从数据库中得到了String,它有多个逗号()。我想删除 最后一个逗号, 但实际上找不到一种简单的方法。 我有的: 我想要的是: 问题答案: 要删除紧随字符串结尾的部分,您可以执行以下操作: 相对于/ solution,它需要对此类情况进行特殊处理,这可以优雅地处理空列表(空字符串)。 示例代码: 注意: 由于存在有关零件的一些注释和建议的编辑:表达式应与要删除的尾部零件匹配。 如果

  • 问题内容: 我有&想要将其转换为逗号分隔的字符串。我的方法如下所示,但也需要其他意见。 问题答案: 从Apache Commons库: 用: 另一个类似的问题和答案在这里