例子1:

import java.text.SimpleDateFormat;
import java.util.Date;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class MsgCode {private static final Logger logger = LoggerFactory.getLogger(MsgCode.class);public static String getMsg(int code,Object... args) {return getMsg(String.valueOf(code),args);}public static String getMsg(String code,Object... args) {if( null==code || code.length()!=4){return null;}if( null==args ){return getMsgByCode("9999");}return String.format(getMsgByCode(code), args);}public static String getMsgByCode(String code) {int code1   = Integer.parseInt(code);String msg1 = "";switch (code1) {case 2000: msg1 = "系统内部错误"; break;case 2001: msg1 = "账号(%s)不存在"; break;case 2002: msg1 = "密码错误"; break;case 2003: msg1 = "账号(%s)已被锁定"; break;case 2004: msg1 = "账号(%s)已过期,过期时间:%s"; break;default: msg1 = String.valueOf(code1); break;}return msg1;}public static void main(String[] args) {logger.error( getMsg(2000));logger.info( getMsg(2001,"Cloudy"));logger.warn( getMsg(2004,"Cloudy",new SimpleDateFormat("yyyy-MM-dd").format(new Date())));}

结果示例:

[2019-08-28 11:14:25][ERROR][com.hsbc.gbm.hss.chinacustody.api.tools.MsgCode][50] 系统内部错误
[2019-08-28 11:14:25][INFO ][com.hsbc.gbm.hss.chinacustody.api.tools.MsgCode][51] 账号(Cloudy)不存在
[2019-08-28 11:14:25][WARN ][com.hsbc.gbm.hss.chinacustody.api.tools.MsgCode][52] 账号(Cloudy)已过期,过期时间:2019-08-28

例子2:(转:https://segmentfault.com/q/1010000007550923

import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** Java 占位符  替换工具类**/
public class Test4_Zhanweifu {private static final Pattern pattern = Pattern.compile("\\{(.*?)\\}");private static Matcher matcher;/*** 格式化字符串 字符串中使用{key}表示占位符* * @param sourStr*            需要匹配的字符串* @param param*            参数集* @return*/public static String stringFormat(String sourStr, Map<String, Object> param) {String tagerStr = sourStr;if (param == null)return tagerStr;matcher = pattern.matcher(tagerStr);while (matcher.find()) {String key = matcher.group();String keyclone = key.substring(1, key.length() - 1).trim();Object value = param.get(keyclone);if (value != null)tagerStr = tagerStr.replace(key, value.toString());}return tagerStr;}/*** 格式化字符串 字符串中使用{key}表示占位符 利用反射 自动获取对象属性值 (必须有get方法)* * @param sourStr*            需要匹配的字符串* @param param*            参数集* @return*/public static String stringFormat(String sourStr, Object obj) {String tagerStr = sourStr;matcher = pattern.matcher(tagerStr);if (obj == null)return tagerStr;PropertyDescriptor pd;Method getMethod;// 匹配{}中间的内容 包括括号while (matcher.find()) {String key = matcher.group();String keyclone = key.substring(1, key.length() - 1).trim();try {pd = new PropertyDescriptor(keyclone, obj.getClass());getMethod = pd.getReadMethod();// 获得get方法Object value = getMethod.invoke(obj);if (value != null)tagerStr = tagerStr.replace(key, value.toString());} catch (Exception e) {// TODO Auto-generated catch block// Loggers.addException(e);}}return tagerStr;}/*** 格式化字符串 (替换所有) 字符串中使用{key}表示占位符* * @param sourStr*            需要匹配的字符串* @param param*            参数集* @return*/public static String stringFormatAll(String sourStr, Map<String, Object> param) {String tagerStr = sourStr;if (param == null)return tagerStr;matcher = pattern.matcher(tagerStr);while (matcher.find()) {String key = matcher.group();String keyclone = key.substring(1, key.length() - 1).trim();Object value = param.get(keyclone);if (value != null)tagerStr = tagerStr.replace(key, value.toString());}return tagerStr;}}

Java 占位符 例子 - 消息模板相关推荐

  1. js中类似${xx,xxxy}的语句——${}占位符的使用 ``模板字符串的使用

    js中类似$ {xx,xxxy}的语句--${}占位符的使用 & ``模板字符串的使用 `` 是模板字符串,ES2015新增的符号. var x = 'a', y = 'b'; var z = ...

  2. java占位符填充_Java使用freemark生成word

    1.制作模板 先用office word做一个模板word文档,${usrName}.${nowDate}占位符 可以使用 office 或者 wps 先创建一个模板表格 (替换$部分可以在 模板格式 ...

  3. java占位符打印_java简单日志打印规范小记

    个人认为,如果公司一些基础类库不做约束,很可能"埋坑",形成技术债务,最终为此付出代价.本文讲解一个最基本的日志打印规范. 1. 日志打印组件 日志组件有很多,日志门面的选择有:S ...

  4. Java占位符替换工具类

    import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFact ...

  5. java占位符打印_什么是 Java 构造器?

    构造器是编程的强大组件.使用它们来释放 Java 的全部潜力. -- Seth Kenlon(作者) 在开源.跨平台编程领域,Java 无疑(?)是无可争议的重量级语言.尽管有许多 伟大的跨平台 框架 ...

  6. java占位符填充_程序员:深入理解Java虚拟机,对象的内存布局

    在 HotSpot 虚拟机中,对象在内存中存储的布局分为 3 块区域:对象头 ( Header ) .实例数据 ( InstanceData ) 和对齐填充 (Padding) . 一.对象的内存布局 ...

  7. java占位符填充_Java占位符

    一.背景 在使用java开发的过程中,经常需要使用将字符串拼接到一起(比如,用于日志输出),常用方法如下: 使用+将不同字符串进行拼接 使用StringBuilder 使用String.format ...

  8. python四种占位符例子_Python 占位符格式化的简单示例

    对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 占位符,顾名思义就是插在输出里站位的符号.占位符是绝大部分编程语言都存在的语法, 而且大部分都是相 ...

  9. python四种占位符例子_python占位符输入方式实例

    占位符,顾名思义就是插在输出里站位的符号.占位符是绝大部分编程语言都存在的语法, 而且大部分都是相通的, 它是一种非常常用的字符串格式化的方式. 1.常用占位符的含义 s : 获取传入对象的__str ...

最新文章

  1. 应届生想要获取web前端开发岗位?这份技能攻略,面试攻略别错过!
  2. (四) prometheus + grafana + alertmanager 配置Kafka监控
  3. 两位一体数码管引脚图_两位一体共阴数码管,第二位数字显示不出来,按钮第7按钮按下去来回显示,但第一位又不显示了,,,急...
  4. 安卓天天练练(十一)用list绑数据
  5. textField textView输入限制
  6. maven打war包
  7. 方法的绑定机制-静态绑定和动态绑定
  8. android无法自动旋屏,Android 手动设置屏幕方向后不能自动转屏问题
  9. 判断域名来源的操作【window.location.host.indexOf(‘域名关键词‘)】 - 代码篇
  10. OpenShift 4 之升级集群
  11. 二十五、K8s系统强化1- 系统安全与apparmor
  12. 基于SpringBoot的救援物资管理系统
  13. iOS添加子控制器(addChildViewController)
  14. 肠道微生物会导致你变胖吗?
  15. 地籍测量类毕业论文文献有哪些?
  16. pixi 小游戏_使用 Pixi.js 开发微信小游戏
  17. 2021年程序人生的随想总结
  18. 运行veins示例步骤
  19. Ant-Design源码分析——Skeleton(二)
  20. 【3ds MAX插件】近期发布的几个小插件,总有一款适合你

热门文章

  1. Java基础之多线程
  2. 群晖qB种子数据位置
  3. 定时任务Cron表达式学习
  4. Flink流处理Demo(含源码)
  5. 基于FileZilla Server文件服务器配置且支持公网解决方案
  6. Microsoft Edge浏览器插件安装失败
  7. 【游记】NOIP-2018翻车记
  8. 笔记01-Java基础语法
  9. 利用excel将相邻两个字间的空白去掉
  10. ① Vue3开发环境搭建