java - 对 String.format() 使用可变长度参数列表

标签 java string iterator string-formatting

我得到一个字符串模板和一个可变长度参数列表。我需要 我需要将参数插入模板并发送结果。

例如:

模板:“%1s 测试 %2s 测试 %1s”

参数:“猫”,“狗”

结果:“CAT 测试 DOG 测试 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作为第二个参数 varargs,所以你可以像这样重写你的代码:

public static String getStringFromTemplate(String template, String ...args) {
    return String.format(template, args);
}

此外,如果您想多次使用一个参数,您应该更改模板字符串:

template = "%1$s test %2$s test %1$s";

您可以找到易于理解的教程 here .

关于java - 对 String.format() 使用可变长度参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60339427/

相关文章:

java - 方法repaint()不重画,球重力动画

java - 为什么 Spring MVC 4 和 Hystrix 集成在没有 Spring boot API 的情况下无法工作?

java - JHipster 邮件服务 - javax.mail.SendFailedException : No recipient addresses

python - 字符串中的变量列表

python - 可迭代列表的迭代类型转换

C++ 流迭代器

java - 如何获取可填充到 ListView 的两个列表之间的公共(public)元素的 ArrayList。

将字符数组转换为字符串

linux - 如何在搜索特定字符串后使用 grep 和 sed 替换子字符串?

c++ - 迭代器中的代理对象