将不同数量的参数添加到属性文件

Add varied number of parameters to properties file

假设我们正在尝试使用属性文件打印出上学儿童的姓名列表,并且姓名列表的大小各不相同:

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

属性文件是:

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

我想要这样的输出:

john, sarah, and george all go to MLK school

请记住,名单会发生变化。如何使用属性文件完成此操作?

可以简单使用

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

编辑:如何在姓氏之前添加和:

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);

编辑:如评论中所建议,如果您想要某种本地化,您可以使用 属性 作为连词,代码段将变为:

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);

在更复杂的场景(Web 应用程序)中,您可以使用 ResourceBoundle,更多信息 here and here