gpt4 book ai didi

java - 如何用 SimpleDateFormat 模式替换字符串中的占位符

转载 作者:搜寻专家 更新时间:2023-10-30 21:14:40 28 4
gpt4 key购买 nike

像这样在给定的字符串中

".../uploads/${customer}/${dateTime('yyyyMMdd')}/report.pdf"

我需要替换一个 customer 和一个 yyyyMMdd 时间戳。

要替换 customer 占位符,我可以使用 Apache Commons 中的 StrSubstitutor。但是如何替换SimpleDateFormat呢?我们在 Spring 环境中运行,所以也许 Spring EL 是一个选项?

占位符的标记不是固定的,如果另一个库需要语法更改也没关系。

这个小测试显示了问题:

SimpleDateFormat            formatter   = new SimpleDateFormat("yyyyMMdd");

String template = ".../uploads/${customer}/${dateTime('yyyyMMdd')}/report.pdf";

@Test
public void shouldResolvePlaceholder()
{
final Map<String, String> model = new HashMap<String, String>();
model.put("customer", "Mr. Foobar");

final String filledTemplate = StrSubstitutor.replace(this.template, model);

assertEquals(".../uploads/Mr. Foobar/" + this.formatter.format(new Date()) + "/report.pdf", filledTemplate);
}

最佳答案

你为什么不使用MessageFormat相反?

String result = MessageFormat.format(".../uploads/{0}/{1,date,yyyyMMdd}/report.pdf", customer, date);

或用String.format

String result = String.format(".../uploads/%1$s/%2$tY%2$tm%2$td/report.pdf", customer, date);

关于java - 如何用 SimpleDateFormat 模式替换字符串中的占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16436027/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com