String.format和数组

时间:2017-10-14 12:59:49

标签: java printf

有没有办法方便地使用String.format(或printf)来打印数组中的值。例如:

public static void main(String[] args) {
    System.out.printf("Today is %tc and your args are %TAG", new Date(), args);
}

输出我正在寻找:

Today is Sat Oct 14 14:54:51 CEST 2017 and your args are uno dos tres

如示例所示,我不知道args数组有多长?到目前为止,我提出的唯一解决方案是首先使用.format来获取字符串的第一部分,然后循环遍历args数组并附加空格分隔的块。

2 个答案:

答案 0 :(得分:2)

你有Arrays.toString(...),它会将其格式化为[" unos"," dos",tres"],但我认为这不是你想要的

通常我使用流式api将结果收集到一个字符串中:   Arrays.stream(args).collect(Collectors.joining(" "));

public static void main(String[] args) {
  System.out.printf("Today is %tc and your args are %s%n", new Date(), 
    Arrays.stream(args).collect(Collectors.joining(" ")));
}

答案 1 :(得分:0)

由于它不是原始数组,因此可以将args包装在列表中:

System.out.printf("%Tc %s", new Date(), Arrays.asList(args));

然后,toString使用List的实现。