答案 0 :(得分:1)
这就是 Arrays.toString
的工作原理。如果您需要不同的行为,则必须自己编写一个方法。特别是如果您希望所有元素都用逗号分隔,您可以利用方法 String.join
来做到这一点。
答案 1 :(得分:1)
如评论中所述,您可以从 Arrays.toString
生成的结果字符串中删除括号。
但是,您可以在 String::join
或基于流的解决方案的帮助下使用任何其他分隔符简单地连接数组元素:
Integer[] arr = {1, 2, 3, 4, 5, null};
String str = Arrays.stream(arr)
.map(Objects::toString) // use null-safe conversion
.collect(Collectors.joining(", "));
// str = "1, 2, 3, 4, 5, null"
对于像 int[]
这样的原始值数组,必须使用 IntStream
并将其元素映射到带有 mapToObj
的字符串:
int[] arr = {1, 2, 3, 4, 5};
String str = IntStream.of(arr)
.mapToObj(Integer::toString)
.collect(Collectors.joining("; ")); // use semicolon
// str = "1; 2; 3; 4; 5"
答案 2 :(得分:1)
实际上,标准库提供了一个很好的类来连接带有特定分隔符、前缀和后缀的字符串。
int[] nums = {1,2,3,4,5,6};
StringJoiner stringJoiner = new StringJoiner(",", "", ""); //Delimiter, Prefix, Suffix
for (int num : nums) {
stringJoiner.add(String.valueOf(num));
}
System.out.println(stringJoiner);
或者,如果您更喜欢流媒体:
StringJoiner stringJoiner = new StringJoiner(",", "", "");
Arrays.stream(nums).mapToObj(String::valueOf).forEach(stringJoiner::add);
System.out.println(stringJoiner);
答案 3 :(得分:0)
您可以使用 java String replaceAll 方法删除 brackets & commas
。
这是一个插图:
int nums[] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};
String s1 = Arrays.toString(nums);
// Replacing all '[' , ',', ']'
String s2 = Arrays.toString(nums).replaceAll("\\[|\\]|,", "");
System.out.println( s1 );
// [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000]
System.out.println( s2 );
// 1 4 5 9 10 40 50 90 100 400 500 900 1000
replaceAll
方法将匹配 oldSubstring 的每个子字符串替换为与字符串中的 newSubstring 匹配的子字符串。
对于多个子字符串替换:
我们可以使用
input.replaceAll("string1|string2|string3","replacementString");
答案 4 :(得分:0)
这是 java.util.Arrays 中的 toString 方法
public static String toString(double[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
所以你可以简单地自己移除大括号:
public static String myToString(double[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "";
StringBuilder b = new StringBuilder();
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)
return b.toString();
b.append(", ");
}
}
答案 5 :(得分:0)
可以像这样打印不带括号的数组。
import java.util.*;
class Example{
public static void printArray(int[] xr){
for(int i=0;i<xr.length;i++){
System.out.print(xr[i]+", ");
}
System.out.print("\b\b");
}
public static void main(String args[]){
int[] ar={10,20,30,40,50,60,70};
printArray(ar);
}
}