java - 为 String.format() 使用可变长度参数列表
问题描述
我得到一个字符串模板和一个可变长度的参数列表。我需要在模板中插入参数并发送结果。
例如:
模板:"%1s test %2s test %1s"
参数:"CAT", "DOG"
结果:"CAT test DOG test CAT"
我试着这样做。但是我得到了一个错误,因为事实上,我正在尝试执行String.format("%1s test %2s test %1s", "value")
真正错误的字符串。
public static void main(String[] args) {
getStringFromTemplate("%1s test %2s test %1s", "CAT", "DOG");
}
public void getStringFromTemplate(String template, String... args){
ArrayList<String> states = new ArrayList<>();
Collections.addAll(states, args);
String s;
Iterator<String> iter = states.iterator();
while(iter.hasNext()){
s = String.format("%1s test %2s test %1s", iter.next());
}
rerurn s;
}
解决方案
String.format将第二个参数作为可变参数,因此您可以像这样重写您的代码:
public static String getStringFromTemplate(String template, String ...args) {
return String.format(template, args);
}
另外,如果你想多次使用一个参数,你应该改变你的模板字符串:
template = "%1$s test %2$s test %1$s";
你可以在这里找到可以理解的教程。
推荐阅读
- xcode - 如何在swiftui中自动向下滚动
- java - 如果枚举仅在一侧,则使用 == 进行比较
- php - 将数组从 js 发送到 php 到 SQL 数据库
- android - VS Code/Flutter/Android - 密钥库文件未设置用于签署配置版本
- pandas - 从 Pandas 中的 Pickled DataFrame 加载单个系列
- c# - 上一个任务完成后调用异步方法
- r - 如何使用 LaTeX 替代 {} 以将 R/exams 完形填空问题导入带有 LaTeX 代码的 Moodle?
- c - 在不链接 c 标准库的情况下使用编译器内置函数
- c++ - 声明类内向量的大小
- file-upload - 试图找到一种在 symfony 5 中调整上传图像大小的方法