这是从文件中读取的字符串template
。
Dialogue: {0}
Dialogue: {1}
从文件中读取后,我想使用给定的数组格式化此字符串。
var sentences = arrayOf("hello", "world")
var template = File("file_path").readText()
template = MessageFormat.format(template, sentences)
print(template)
但我得到输出。
Dialogue: [Ljava.lang.String;@27c170f0
Dialogue: {1}
如果我逐个放置数组元素,我会得到正确的输出。
答案 0 :(得分:4)
sentence
变量是一个数组而不是多个参数。您必须先放置*
(spread operator)才能将其转换为vararg。
MessageFormat.format(template, *sentences)
答案 1 :(得分:1)
You can use spread operator *
:
MessageFormat.format(template, *sentences)
它会将数组转换为vararg以匹配format
方法签名:
format(String pattern, Object... arguments)
来自文档:
当我们调用vararg函数时,我们可以逐个传递参数,例如: asList(1,2,3),或者,如果我们已经有一个数组并希望传递它 函数的内容,我们使用扩展运算符(数组前缀) 与*)