Добавляйте различное количество параметров в файл свойств - PullRequest
1 голос
/ 07 мая 2020

предположим, что мы пытаемся распечатать список имен детей, которые go ходят в школу, используя файл свойств, и список имен различается по размеру:

List<String> names = newArrayList<>("john", "sarah", "george");

файл свойств:

key.print.names = "{0} all go to {1} school"

Я хочу получить такой результат:

Джон, Сара и Джордж все go в школу MLK

Помните о списке имен изменится. Как это можно сделать с помощью файла свойств?

1 Ответ

1 голос
/ 07 мая 2020

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

MessageFormat.format(property.getString("key.print.names"),String.join(",",names),schoolName);

EDIT: как добавить и перед фамилией:

String listOfNames = String.join(" and ",
                        Arrays.asList(
                            String.join(",", names.subList(0, names.size() - 1)), 
                            names.get(names.size() - 1)
                        )
                     );
MessageFormat.format(property.getString("key.print.names"),listOfNames,schoolName);

EDIT: как предлагается в комментарии, если вы хотите своего рода локализацию вы можете использовать свойство для соединения, и фрагмент станет следующим:

String listOfNames = String.join(new StringBuilder(" ")              
                                .append(property.getString("key.conjunction.en"))
                                .append(" ").toString(),
                        Arrays.asList(
                            String.join(",", names.subList(0, names.size() - 1)), 
                            names.get(names.size() - 1)
                        )
                     );
MessageFormat.format(property.getString("key.print.names"),listOfNames,schoolName);

В более сложном сценарии (веб-приложение) вы можете использовать ResourceBoundle, подробнее здесь и здесь

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