Java MessageFormat无法格式化

时间:2018-04-27 12:33:54

标签: java kotlin

这是从文件中读取的字符串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}

修改

如果我逐个放置数组元素,我会得到正确的输出。

2 个答案:

答案 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),或者,如果我们已经有一个数组并希望传递它   函数的内容,我们使用扩展运算符(数组前缀)   与*)