Java 使用参数更新字符串
我将Spring与Java8一起使用 我有一个带参数的字符串,我不确定如何按参数列表更新参数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
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));