【问题标题】:Convert int[] to comma-separated string将 int[] 转换为逗号分隔的字符串
【发布时间】:2018-08-16 18:53:42
【问题描述】:

如何在 Java 中将int[] 转换为逗号分隔的字符串?

int[] intArray = {234, 808, 342};

我想要的结果:

"234, 808, 342"

这里有非常相似的参考问题,但这些解决方案都没有提供我需要的结果。

到目前为止我已经尝试过,

String commaSeparatedUserIds = Arrays.toString(intArray); // result: "[234, 808, 342]"
String commaSeparatedUserIds = Arrays.toString(intArray).replaceAll("\\[|\\]|,|\\s", ""); // result: "234808342"
String commaSeparatedUserIds = intArray.toString();  // garbage result

【问题讨论】:

  • Arrays.toString(intArray) 只需删除最后一个和第一个字符,不要做正则表达式。
  • @luk2302 - 你能为我提供确切的解决方案吗?我是Java 的新手。我只精通iOS
  • String s = Arrays.toString(intArray); s = s.substring(1,s.length()-1);应该能解决你的问题

标签: java arrays string int


【解决方案1】:

这是我一直用于分隔连接的模式。每次都编写这个样板文件很痛苦,但它比其他人发布的新奇的Stream 解决方案更有效(在内存和处理时间方面)。

public static String toString(int[] arr) {
    StringBuilder buf = new StringBuilder();
    for (int i = 0, n = arr.length; i < n; i++) {
        if (i > 0) {
            buf.append(", ");
        }
        buf.append(arr[i]);
    }
    return buf.toString();
}

【讨论】:

    【解决方案2】:

    在 java 8 中你可以使用:

    String joined = String.join(",", iteratable);
    

    【讨论】:

    • 这仅适用于字符串数组,问题清楚地表明我们需要一个 int 数组而不是字符串的解决方案。
    • INT 或 LONG 有没有同样简单的方法?
    【解决方案3】:
            int[] intArray = {234, 808, 342, 564};
            String s = Arrays.toString(intArray);
            s = s.substring(1,s.length()-1);
    

    这应该可行。基本思想是从Arrays.toString() 获取子字符串,不包括第一个和最后一个字符

    如果要在结果中引用,请将最后一行替换为:

    s = "\"" + s.substring(1,s.length()-1) + "\"";
    

    【讨论】:

      【解决方案4】:

      这是一个流版本,它在功能上与 khelwood 的版本相同,但使用不同的方法。

      他们都创建了一个IntStream,将每个int 映射到一个String,并用逗号加入它们。

      它们的性能也应该完全相同,尽管技术上我直接调用Integer.toString(int),而他调用String.valueOf(int) 代表它。另一方面,我打电话给IntStream.of(),它代表Arrays.stream(int[]),所以打成平手。

      String result = IntStream.of(intArray)
                               .mapToObj(Integer::toString)
                               .collect(Collectors.joining(", "));
      

      【讨论】:

      • 这可行,但如果数组很长,可能会创建很多中间 String 对象。我将为快速(老式)的方式添加一个答案。
      【解决方案5】:

      应该这样做

      String arrAsStr = Arrays.toString(intArray).replaceAll("\\[|\\]", "");
      

      在 Arrays toString 之后,替换 [] 可以得到所需的输出。

      【讨论】:

        【解决方案6】:

        您想将整数转换为字符串,并用逗号连接它们。您可以使用流来做到这一点。

        int[] intArray = {234, 808, 342};
        String s = Arrays.stream(intArray)
                         .mapToObj(String::valueOf) // convert each int to a string
                         .collect(Collectors.joining(", ")); // join them with ", "
        

        结果:

        "234, 808, 342"
        

        【讨论】:

        • 我已经尝试过您的解决方案和编辑器,向Set project compiler compliance settings to 1.8Set project JRE build path entry to 'JavaSE-1.8' 显示警告。虽然我已经为我的项目设置了JRE System Library [Java SE 1.8]Java Build Path
        • @Krunal 检查你的编译器版本?
        猜你喜欢
        • 1970-01-01
        • 2013-10-23
        • 1970-01-01
        • 2012-02-03
        • 2019-11-18
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多