Java 使用参数更新字符串

Java 使用参数更新字符串,java,string,parameters,java-8,Java,String,Parameters,Java 8,我将Spring与Java8一起使用 我有一个带参数的字符串,我不确定如何按参数列表更新参数 String message = "Today is {0} and {1} is happy"; List<String> params = Arrays.asList("Sunday", "Uri", "Dan"); 谢谢你你可以这样使用: String result = MessageFormat.format(message, params.toArray()); 输出 To

我将Spring与Java8一起使用

我有一个带参数的字符串,我不确定如何按参数列表更新参数

 String message = "Today is {0} and {1} is happy";
 List<String> params = Arrays.asList("Sunday", "Uri", "Dan");
谢谢你

你可以这样使用:

String result = MessageFormat.format(message, params.toArray());
输出

Today is Sunday and Uri is happy

虽然你已经得到了你确切要求的准确答案。但是MessageFormat非常危险,而且不够灵活,您必须重复值替换。例如,您希望输出字符串为
,今天是星期天,Uri很高兴。还有,Uri今天要参加聚会。

现在,MessageFormat代码如下所示:

 String message = "Today is {0} and {1} is happy. Also, {2} is going to party today.";
 List<String> params = Arrays.asList("Sunday", "Uri", "Uri");
 String result = MessageFormat.format(message, params.toArray());
请注意,如何替换命名值。这就像在SQL查询中选择
命名参数一样

StrSubstitutor
来自
log4j
框架

因此,请根据您的需要做出正确的选择


干杯

请尝试一下。@Logan。这可能不会直接出现在一个全面的解决方案中。与
Spring
没有真正的关系,但是如果
params
String[]
(您可以轻松创建它),您可以使用
java.text.MessageFormat.format
@Pshemo谢谢。我试试看。实际上,我现在看到了一个使用String.format的解决方案。我两个都试试,是log4j的。我觉得它很方便。更新了我的答案。StrSubstitutor是否从org.apache.commons.lang3.text.StrSubstitutor导入有关系吗?我认为apache commons是由apache开发的,是用于常见操作和功能的实用工具。您应该通过API快速检查它的实现。因为我相信可能与log4j提供的有一些偏差。虽然log4j是一个通用的日志框架,因此如果您想使用apachecommons,那么也应该有其他强有力的理由。
 String message = "Today is {0} and {1} is happy. Also, {2} is going to party today.";
 List<String> params = Arrays.asList("Sunday", "Uri", "Uri");
 String result = MessageFormat.format(message, params.toArray());
    String template = "Today is ${day} and ${name} is happy";
    Map<String, String> data = new HashMap<>();
    data.put("day", "Sunday");
    data.put("name", "Uri");
    System.out.println(StrSubstitutor.replace(template, data));