将 int[] 转换为逗号分隔的字符串

Posted

技术标签:

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

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

int[] intArray = 234, 808, 342;

我想要的结果:

"234, 808, 342"

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

How to convert an int array to String with toString method in Java

How do I print my Java object without getting "SomeType@2f92e0f4"?

How to convert a List<String> into a comma separated string without iterating List explicitly

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

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);应该能解决你的问题 【参考方案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 检查你的编译器版本?

以上是关于将 int[] 转换为逗号分隔的字符串的主要内容,如果未能解决你的问题,请参考以下文章

将逗号分隔的字符串转换为列表

拆分用逗号分隔的字符串并将值存储到 int 数组中

将逗号分隔值转换为双引号逗号分隔字符串

无法将逗号分隔的字符串转换为数组

如何将逗号分隔的字符串转换为数组?

如何将逗号分隔的字符串转换为列表?