微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

apache commons-text StringSubstitutor, valueMap.put("amount", 20.0);如何输出`$20.0`?

如何解决apache commons-text StringSubstitutor, valueMap.put("amount", 20.0);如何输出`$20.0`?

代码

Map<String,Number> valueMap = new HashMap<>();
valueMap.put("amount",20.0);
valueMap.put("id",123456);
StringSubstitutor ss = new StringSubstitutor(valueMap);
// I expect output: $123456===$20.0
System.out.println(ss.replace("${id}===${amount}"));  // output: 123456===20.0
System.out.println(ss.replace("$${id}===$${amount}"));// output: ${id}===${amount}
System.out.println(ss.replace("$$${id}===$$${amount}")); // output: $${id}===$${amount}

我期望输出$123456===$20.0,怎么办?

解决方法

您可以通过设置转义字符来实现,如下例所示。我已经在我的本地机器上测试过它并且它按预期工作:

Map<String,Number> valueMap = new HashMap<>();
valueMap.put("amount",20.0);
valueMap.put("id",123456);

StringSubstitutor ss = new StringSubstitutor(valueMap);
ss.setEscapeChar('\\');

System.out.println(ss.replace("$${id}===$${amount}"));  // output: $123456===$20.0

请参考java docs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。