为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过从列表中获取参数来使用 String.format 创建字符串

如何通过从列表中获取参数来使用 String.format 创建字符串

Helenr 2023-11-01 21:54:25
我想从包含整数的列表的值创建一个带有 String.format 的字符串,如下所示 String.format("Q1={}, Q2={}, Q3={}, Q4={}" list) 。private String createString(Player player){List<Integer> answers= new ArrayList<>();    answers.add(player.getQuestion1());    answers.add(player.getQuestion2());    answers.add(player.getQuestion3());    answers.add(player.getQuestion4());    answers.add(player.getQuestion5());    answers.add(player.getQuestion6());    answers.add(player.getQuestion7());    answers.add(player.getQuestion8());    answers.add(player.getQuestion9());    answers.add(player.getQuestion10());    return String.format("Q1={}, Q2={}, Q3={}, Q4={}, Q5={}, Q6={}, Q7={}, Q8={}, Q9={}, Q10={}", answers.stream().map(a -> a.toString());}
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

类似于以下内容,Collectors.joining根据需要使用索引和答案进行映射:

return IntStream.range(0, answers.size())
            .mapToObj(idx -> String.format("Q%s = %s", idx + 1, answers.get(idx)))
            .collect(Collectors.joining(", "))


查看完整回答
反对 回复 2023-11-01
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

String.format不适合格式化列表。通常,String.join更合适。


首先,创建一个用逗号连接的字符串列表:


List<String> strings = IntStream.rangeClosed(1, answers.size())

    .mapToObj(x -> "Q" + x + "=" + answers.get(x - 1))

    .collect(Collectors.toList());

然后,致电String.join:


String result = String.join(", ", strings);


查看完整回答
反对 回复 2023-11-01
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

String.format对于此示例效果不佳,因为您需要的格式中的占位符数量与列表大小完全相同。你最好构建自己的字符串。但如果你想坚持String.format

由于String.format使用 varargs (这是一个数组),因此您可以简单地使用toArray(). 请注意,格式中的占位符只能{}%d,%s

return String.format("Q1=%s, Q2=%s, Q3=%s, Q4=%s, Q5=%s, ...", answers.toArray());


查看完整回答
反对 回复 2023-11-01
  • 3 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信