问题描述
代码:
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