Java 如何通过从列表中获取参数来创建String.format字符串
我想从包含整数的列表的值中创建一个类似于String.format的String.format字符串(“Q1={},Q2={},Q3={},Q4={}”列表)Java 如何通过从列表中获取参数来创建String.format字符串,java,string,java-stream,string.format,Java,String,Java Stream,String.format,我想从包含整数的列表的值中创建一个类似于String.format的String.format字符串(“Q1={},Q2={},Q3={},Q4={}”列表) 私有字符串createString(播放器){ 列表答案=新建ArrayList(); add(player.getQuestion1()); add(player.getQuestion2()); add(player.getQuestion3()); add(player.getQuestion4()); add(player.get
私有字符串createString(播放器){
列表答案=新建ArrayList();
add(player.getQuestion1());
add(player.getQuestion2());
add(player.getQuestion3());
add(player.getQuestion4());
add(player.getQuestion5());
add(player.getQuestion6());
add(player.getQuestion7());
add(player.getQuestion8());
add(player.getQuestion9());
add(player.getQuestion10());
返回String.format(“Q1={},Q2={},Q3={},Q4={},Q5={},Q6={},Q7={},Q8={},Q9={},Q10={}”,answers.stream().map(a->a.toString());
}
使用收集器执行类似以下操作。根据需要使用T索引和答案将
与映射连接起来:
return IntStream.range(0, answers.size())
.mapToObj(idx -> String.format("Q%s = %s", idx + 1, answers.get(idx)))
.collect(Collectors.joining(", "))
String.format
不适合格式化列表。通常,String.join
更适合
首先,创建要用逗号连接的字符串列表:
List<String> strings = IntStream.rangeClosed(1, answers.size())
.mapToObj(x -> "Q" + x + "=" + answers.get(x - 1))
.collect(Collectors.toList());
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());
你能给问题添加更多的细节吗,就像你到目前为止所做的那样。@JennisVaishnav请再次检查我更新了主题
Q1,Q2
手动附加在那里,即问题的索引。withQ
中的数字1,2,3直观地说可能是问题的索引。是的,它是。但是每个问题都有单独的获取者无论如何,这10个问题。如果OP想要硬编码字符串,这是将值列表传递给varargs方法的语法正确的方法。
return String.format("Q1=%s, Q2=%s, Q3=%s, Q4=%s, Q5=%s, ...", answers.toArray());