Java中如何用字符串列表批量格式化含多个%s的字符串?
嘿,这个场景我太熟悉了——当参数列表越长,一个个写list.get(0)、list.get(1)不仅麻烦,还容易写错索引!这里有个超简洁的解决办法,完全不用手动提取每个参数:
核心思路:利用String.format的可变参数特性
String.format的第二个参数是Object... args(可变参数),而可变参数本质上就是数组。所以我们只需要把列表转换成数组,直接传给String.format就可以了!
示例代码
List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); // 哪怕再加更多元素也不用改代码 String toFormat = "First value: %s, Second: %s, Third: %s"; // 关键一步:把List转成Object数组传入 String result = String.format(toFormat, list.toArray());
额外提醒
- 一定要保证待格式化字符串里的
%s占位符数量和列表元素数量完全匹配,不然会抛出MissingFormatArgumentException异常哦。 - 如果你的列表里不是String类型(比如Integer、Double)也没关系,
String.format会自动调用每个元素的toString()方法来处理。 - 要是你想更明确地指定数组类型(比如String数组),也可以用
list.toArray(new String[0]),效果和list.toArray()是一样的。
内容的提问来源于stack exchange,提问作者Stanislav Semyonov
相关产品推荐
相关产品推荐

