替换${}的内容

如何替换${} 中的参数

欢迎用户:${
     user},您的密码${
     password}
  1. 获取模板
  2. 取出模板${}中的数据(正则表达式)并以(,)拼接
  3. 查找将要替换的字符(按相同顺序存入)并以(,)拼接
  4. 替换
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author: xh
 * @Date: 2021/1/20 18:06
 */

public class ReplaceUtils {
     

    public static void main(String[] args) {
     
        //1.获取模板
        String str = "欢迎用户:${user},您的密码${password}";
        System.out.println("替换前的字符:" + str);
        //2.截取关键字符 ${user} ${password}
        String spliteStr = getContentInfo(str);
        //3.查找准备进行替换的参数 阿呆,123456
        String spliteRepliceStr = checkStr(spliteStr);
        //4.替换模板中的内容
        String replaceStr = ReplaceStr(str, spliteStr, spliteRepliceStr);
        System.out.println("替换后的字符:" + replaceStr);

    }

    /**
     * 替换${}符号中的数据
     *
     * @param str   例如:欢迎用户:${user},您的密码${password}
     * @param param user,password
     * @param data  阿呆,123456
     * @return 替换后的字符串
     */
    private static String ReplaceStr(String str, String param, String data) {
     
        //将要替换的参数转成数组
        String[] params = param.split(",");
        String[] datas = data.split(",");
        //替换原字符串
        for (int i = 0; i < params.length; i++) {
     
            str = str.replace("${" + params[i] + "}", datas[i]);
        }
        return str;
    }


    /**
     * 模拟取出数据
     * @param spliteStr
     * @return 阿呆,123456
     */
    private static String checkStr(String spliteStr) {
     
        String[] strings = spliteStr.split(",");
        StringBuffer stringBuffer = new StringBuffer();
        for (String string : strings) {
     
            switch (string) {
     
                case "user":
                    String username = "阿呆";
                    stringBuffer.append(username + ",");
                    break;
                case "password":
                    String password = "123456";
                    stringBuffer.append(password + ",");
                    break;
            }

        }
        //替换的数据 以,分割
        String nowStr = stringBuffer.toString();
        return nowStr;
    }


    /**
     * 获取表达式中${}中的值
     *
     * @param content
     * @return
     */
    static Pattern regex = Pattern.compile("\\$\\{([^}]*)\\}");

    /**
     * 查找${}中的参数
     * @param content
     * @return
     */
    public static String getContentInfo(String content) {
     
        Matcher matcher = regex.matcher(content);
        StringBuilder sql = new StringBuilder();
        while (matcher.find()) {
     
            sql.append(matcher.group(1) + ",");
        }
        if (sql.length() > 0) {
     
            sql.deleteCharAt(sql.length() - 1);
        }
        return sql.toString();
    }
}

运行结果:
在这里插入图片描述

你可能感兴趣的:(替换,字符串,正则表达式,java)