Java MessageFormat не может отформатировать - PullRequest
0 голосов
/ 27 апреля 2018

Вот строка 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}

EDIT

Если я положу элементы массива один за другим, я получу правильный вывод.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вы можете использовать оператор распространения *:

MessageFormat.format(template, *sentences)

Преобразует массив в vararg для соответствия format сигнатура метода:

format(String pattern, Object... arguments)

Из документов:

Когда мы вызываем функцию vararg, мы можем передавать аргументы один за другим, например, asList (1, 2, 3), или, если у нас уже есть массив и мы хотим передать его содержимое функции, мы используем оператор распространения (префикс массива с *)

0 голосов
/ 27 апреля 2018

Переменная sentence является массивом, а не множественным аргументом. Вы должны поставить * ( оператор распространения ), прежде чем преобразовать его в vararg.

MessageFormat.format(template, *sentences)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...