diff --git a/protocol/src/main/java/com/zfoo/protocol/util/StringUtils.java b/protocol/src/main/java/com/zfoo/protocol/util/StringUtils.java index 145713df..433d88bb 100644 --- a/protocol/src/main/java/com/zfoo/protocol/util/StringUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/util/StringUtils.java @@ -16,6 +16,7 @@ import com.zfoo.protocol.collection.ArrayUtils; import java.nio.charset.Charset; import java.util.*; +import java.util.regex.Matcher; import java.util.regex.Pattern; /** @@ -468,6 +469,23 @@ public abstract class StringUtils { return builder.toString(); } + /** + * 格式化字符串,类似JavaScript的占位符${name}替换 + */ + public static String render(String template, Map params) { + var pattern = Pattern.compile("\\$\\{(\\w+)\\}"); + var matcher = pattern.matcher(template); + var sb = new StringBuffer(); + + while (matcher.find()) { + var key = matcher.group(1); + var replacement = params.getOrDefault(key, ""); + matcher.appendReplacement(sb, Matcher.quoteReplacement(replacement)); + } + matcher.appendTail(sb); + return sb.toString(); + } + public static boolean isEnglishChar(char ch) { return ENGLISH_SET.contains(ch); }