MessageUtils.java
import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 消息工具类 */ public class MessageUtils { public static void main(String[] args) { System.out.println(formatMessage("{}是 {} 年 {} 月 {} 日 星期{} 平均气温 {}°,办公室人数 {}", "今天", 2023, "09", "06", "三", 34.5, null)); } /** * 格式化消息,参数化替换 {} 占位符 * * @param message 消息内容 * @param values 消息内容替换参数,用于替换消息内容中的 {} 占位符 * @return */ public static String formatMessage(String message, Object... values) { message = message instanceof String ? message : ""; if (!message.contains("{}")) { return message; } int count = (message.length() - message.replace("{}", "").length()) / 2; if (values.length > count) { throw new RuntimeException("参数长度大于 {} 占位符的数量,请调整参数长度或 message 内容"); } List<Object> list = new ArrayList<>(); Arrays.stream(values).forEach(v -> list.add(v)); int index = message.indexOf("{}"); StringBuilder sb = new StringBuilder(); int i = 0; while (index >= 0 && i < list.size()) { String prefix = message.substring(0, index); sb.append(prefix).append(list.get(i)); message = message.substring(index + 2); index = message.indexOf("{}"); i++; } sb.append(message); return sb.toString(); } }
main 函数打印内容:
今天是 2023 年 09 月 06 日 星期三 平均气温 34.5°,办公室人数 null
标签:index,格式化,String,list,占位,java,message,替换 From: https://www.cnblogs.com/nihaorz/p/17682257.html