Java 同时替换 字符串中子串

最近做一个需求,发送短信. 不同短信模板 参数个数/类型不一样:

public void Test(){
    // 短信模板
    String message_model = "尊敬的【0】先生/女士,有一笔订单需要您及时审核,订单号:【1】,客户姓名:【2】。";
    // 判断是否 需要值替换 --> 模板包含数字
    if(HasDigit(message_model)){
       
       // 取出数字 --> 需要替换的值
        Object [] array =  extractDigitList(message_model).toArray();
        String [] searchList = new String[array.length] ;

        //  数组拷贝
        //  System.arraycopy(原数组, 原数组的开始位置, 目标数组, 目标数组的开始位置, 拷贝个数)
        System.arraycopy(array,0,searchList,0,array.length);

       //  Arrays.copyOf(array,array.length);  也可以实现数组拷贝,底层也实现了System.arraycopy(...)

        // 替换的 value 
        String [] replacementList = {"大王","1001","小白"};

        /* Apache的StringUtils.replaceEach
         * 需要替换的文本 , 索引位置集合 , 替换的值 集合
         */ 
        String message = StringUtils.replaceEach(message_model,searchList,replacementList);

        // 结果--> 尊敬的【大王】先生/女士,有一笔订单需要您及时审核,订单号:【1001】,客户姓名:【小白】。
        System.out.println("短信内容:-->"+message);
    }}


// 判断一个字符串是否含有数字
public boolean HasDigit(String content) {
    boolean flag = false;
    Pattern p = Pattern.compile(".*\\d+.*");
    Matcher m = p.matcher(content);
    if (m.matches()) {
        flag = true;
    }
    return flag;
}

// 提取字符串中的数字
public List extractDigitList(String replaceStr){
    List<String> digitList = new ArrayList<String>();
    Pattern pattern = Pattern.compile("[^0-9]");
    Matcher matcher = pattern.matcher(replaceStr);
    String result = matcher.replaceAll("");
    for (int i = 0; i < result.length(); i++) {
        digitList.add(result.substring(i, i+1));
    }
    return digitList ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值