例子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. ssh免密登录linux服务器
  2. 1x pcie 速度_在主板规格上,x8在“1 x PCIe 3.0 x16(x8带宽)”中的含义是什么?...
  3. java 抢单功能设计_java毕业设计_springboot框架的抢单兼职
  4. Docker Toolbox:Docker Toolbox的简介、安装、使用方法之详细攻略
  5. python多版本共存 ubuntu_Linux下python3与python3的多版本共存
  6. Oracle中并行parallel用法
  7. python str转dict
  8. Java 8 Lambda表达式10个示例【存】
  9. QT<八> 绘图事件、绘图设备
  10. 本体、语义网络和知识图谱的概念与区别
  11. 字蛛(FontSpider,中文字体压缩器)网页自由引入中文字体
  12. java转义字符响铃_转义字符
  13. 【工具使用】怎么设置SSH隧道(Port Forwarding)
  14. 【MySQL】SQL优化
  15. $.ajax异步请求总结
  16. 【软件工具】百度搜索技巧
  17. SQL执行顺序和流程
  18. UBT是如何处理Target.cs和Build.cs的?-Unreal4源码拆解-UnrealBuildTool功能流程解析
  19. TDD模式下的射频前端VSWR检测功能难点
  20. squid代理服务器(正向代理与反向代理)

热门文章

  1. STM32构建BootLoader实现多系统OTA
  2. 电磁场与电磁波(9)——有限差分法
  3. 华为硬件工程师手册_浅析华为的元器件选型
  4. LS-Prepost 小球打靶
  5. 12 个 yyds 的微信小程序开源项目,速速收藏!
  6. 如何用3ds Max和Corona创建羊毛地毯。
  7. Win10 Edge浏览器必装插件
  8. Invalid parameter not satisfying: URLString
  9. Oja‘s PCA 用神经网络提取图片主成分 进行压缩和解压
  10. 基于Matlab 的数字图像水印技术