实现原理: hutool工具包
static String
format(String strPattern, Object... argArray)
格式化字符串
此方法只是简单将占位符 {} 按照顺序替换为参数
如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可
例:
通常使用:format("this is {} for {}", "a", "b") =》 this is a for b
转义{}: format("this is \\{} for {}", "a", "b") =》 this is \{} for a
转义\: format("this is \\\\{} for {}", "a", "b") =》 this is \a for b
实战:
场景:用一些第三方接口的api 有些会让你填些参数(拿微信支付举例)
如图:
我们可以把这些api写成一个枚举
/**
*微信支付 api调用接口
* @author zhangjunrong
* @date 2022/5/9 19:57
*/
public enum WxApiType {
/** 下单API */
CREATE_ORDER("https://api.mch.weixin.qq.com/v3/pay/transactions/app"),
/** 查询支付订单API ONE{}=>outTradeNo – 商户订单号 系统生 TOW{}=>mchId商户的商户号,由微信支付生成并下发。 */
QUERY_CREATE_ORDER("https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{}?mchid={}"),
/** 查询退款订单API {}=>outRefundNo 商户退款单号*/
QUERY_REFUND_ORDER("https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{}"),
/** 关闭订单API {}=>outTradeNo 商户订单号*/
CLOSE_ORDER("https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{}/close"),
/** 申请退款API {}=>outTradeNo 商户订单号*/
REFUND_ORDER("https://api.mch.weixin.qq.com/v3/refund/domestic/refunds");
private final String value;
WxApiType(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
然后在调用的时候:
@Test
void testPay() throws JsonProcessingException {
String format = StrFormatter.format(WxApiType.QUERY_CREATE_ORDER.getValue(), "12334344", "223443443wd");
System.out.println(format);
}
结果: