如何在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
答案 0 :(得分:8)
这应该
String arrAsStr = Arrays.toString(intArray).replaceAll("\\[|\\]", "");
在Arrays toString之后,替换[]
会为您提供所需的输出。
答案 1 :(得分:8)
这是一个流版本,在功能上等同于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(", "));
答案 2 :(得分:4)
您希望将整数转换为字符串,并使用逗号连接它们。你可以用流来做到这一点。
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"
答案 3 :(得分: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 :(得分:1)
在Java 8中,您可以使用:
SELECT Id AS ParticipantId, TeamId,
ISNULL((SELECT TOP(1) Weight FROM ParticipantData WHERE (ParticipantId = Participants.Id) AND (Weight <> 0) ORDER BY Date), 0) AS FirstWeight,
ISNULL((SELECT TOP(1) Weight FROM ParticipantData WHERE (ParticipantId = Participants.Id) AND (Weight <> 0) ORDER BY Date DESC), 0) AS LastWeight,
FirstWeight - LastWeight As WeightDiff // this doesn't work
FROM Participants
答案 5 :(得分: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();
}