将 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.8
和Set project JRE build path entry to 'JavaSE-1.8'
显示警告。虽然我已经为我的项目设置了JRE System Library [Java SE 1.8]
为Java Build Path
@Krunal 检查你的编译器版本?以上是关于将 int[] 转换为逗号分隔的字符串的主要内容,如果未能解决你的问题,请参考以下文章