java - 在 String.format() 中组合使用 String 和 Varargs

标签 java variadic-functions string.format

想知道是否可以在 String.format() 中组合单个字符串和可变参数字符串,如下所示:

String strFormat(String template, String str, String... moreStrs) {    
    return String.format(template, str, moreStrs);
}

如果我这样调用上面的代码:

strFormat("%s/%s/%s", "hello", "world", "goodbye");

我得到 java.util.MissingFormatArgumentException:格式说明符 's'

这个有效:

String strFormat(String template, String... moreStrs) {    
    return String.format(template, moreStrs);
}

以及这个作品:

String strFormat(String template, String str1, String str2) {    
    return String.format(template, str1, str2);
}

是否有可能让它发挥作用?

String strFormat(String template, String str, String... moreStrs) {    
    return String.format(template, str, moreStrs);
}

谢谢!

最佳答案

你可以这样做:

String strFormat(String template, String str, String... moreStrs)
{
    String[] args = new String[moreStrs.length + 1];

    // fill the array 'args'
    System.arraycopy(moreStrs, 0, args, 0, moreStrs.length);
    args[moreStrs.length] = str;

    return String.format(template, args);
}

关于java - 在 String.format() 中组合使用 String 和 Varargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935596/

相关文章:

java - 线程中的异常 "AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException : -1

java - 如何通知Fragment类的数据变化?

java - 使用 JSON、jQuery、AJAX 和 Java 返回多个值

java - 需要帮助防止棋子在第一次移动后移动两格

python - 使用 Python 中的 format() 方法打印 boolean 值 True/False

c - 如何模糊 stdarg.h 函数?

objective-c - 如何将数组的元素传递给可变参数函数?

C# 从 CPP 调用未知数量的参数的 CPP 函数

c# - 全局化的自定义数字格式 - 可变小数点

c# - String.Format 与 ToString()