首页 > 其他分享 >格式化消息,参数化替换 {} 占位符

格式化消息,参数化替换 {} 占位符

时间:2023-09-06 14:46:07浏览次数:35  
标签:index 格式化 String list 占位 java message 替换

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

相关文章

  • 前端常用方法分享, 用户输入钱, 转化成分, 类型判断, 时间格式化
    钱转化成分    //转换成分    functiontoCent(numStr){      constreg=/(^(?=.*?[1-9].*?)0\.\d+$)|(^[1-9][0-9]*(\.\d{1,2})?$)/      if(!reg.test(numStr)){        thrownewError('inputerror.e......
  • 482. 密钥格式化
    链接https://leetcode.cn/problems/license-key-formatting/description/思路字符串处理,没啥好说的...代码classSolution:deflicenseKeyFormatting(self,s:str,k:int)->str:valid_len,valid_s=self.get_length(s)first_len=valid_len%......
  • 直线导轨的替换方法
    目前,直线导轨的使用率持续上升,已广泛应用在各种各样的行业中,可替换性高是其广泛使用的重要原因之一!直线导轨的替换指的就是导轨和滑块可以单出,不用整套替换。市面上使用率最高的直线导轨品牌应该就是台湾*银了,其质量佳,但货期较久,简单点来说,就是要等货,对于刚需的厂商来说,是非常不方......
  • 人大金仓 错误提示“致命错误:对不起,已经有太多的客户”解决方案 以及linux替换授权文
    项目需要,头一次接触人大金仓(友情提示,可以使用navicat连接哟)。使用连接工具报“对不起,已经有太多的客户”错误,java程序也是如此,找到数据库的kingbase.conf配置文件修改max_connections属性,重启。ok了。。。。。。。。。。。。。。。。。。。个锤子,这是理想情况。不理想情况:重......
  • js ast 函数调用替换为值
    目标替换ob文件中形如_0x55f3('0x19',"Pg54")的代码为具体的值。consttypes=require("@babel/types");conststr_to_str={ StringLiteral(path){ const{node}=path; node.extra=null; }}var_0x4818=["wqImMT0tw6RNw5k=&quo......
  • 分享一个Python字符串替换的基础题目(下篇)
    大家好,我是皮皮。一、前言上一篇文章,【瑜亮老师】和【凡人不烦人】引申了下字符串处理的题目,如下所示:扩展一下,下面的结果是什么:strs='abbacba'print(strs.lstrip('ab'))print(strs.rstrip('ab'))二、实现过程这里【FANG.J】还是有点东西的,全部都回答正确了。说明是完......
  • 时间格式化对照表 - yyyy-MM-dd HH:mm:ss
      时间格式化对照表-yyyy-MM-ddHH:mm:ss时间格式化对照表仅供参考标识符含义aAM/PM(上午/下午)A0~86399999(一天的第A微秒)c/cc1~7(一周的第一天,周天为1)cccSun/Mon/Tue/Wed/Thu/Fri/Sat(星期几简写)ccccSunday/Monday/Tuesday/Wednesda......
  • Lnton羚通AI云算力平台在OpenCV-Python中如何格式化文本打印
     在不同的编程语言中,有多种方法可以用来格式化文本打印:1.字符串插值/插值字符串:这是一种简单的格式化文本的方法,通过在字符串中插入变量或表达式来实现。不同编程语言中插值字符串的实现方式可能有所不同。例如,在Python中,我们可以使用f-string(格式化字符串字面值)来实现字符串插值......
  • 趣解里式替换之《我买了宝马,为啥不让我停这》
    〇、小故事我们**怎么识别一辆汽车是宝马品牌的汽车呢?**虽然宝马汽车车辆型号非常的多,而且外型也各不相同,但是只要是宝马品牌的汽车,它的车头一定会有宝马汽车的logo,那么这个就是大家最直观去确认一辆车是不是宝马牌汽车的主要依据了。所以,宝马公司就跟各地负责宝马专属停车位的......
  • # yyds干货盘点 # 分享一个Python字符串替换的基础题目(中篇)
    大家好,我是皮皮。一、前言上一篇文章,【瑜亮老师】引申了下字符串处理的题目,如下所示:扩展一下,下面的结果是什么:strs='abbacabbc'print(strs.strip('ab'))二、实现过程这里【王子】还是有点东西的,全部都回答正确了。那么再扩展下呢?你能够回答的出来吗?下一篇文章,我们揭晓答案。三、......