Java占位符例⼦-消息模板
例⼦1:
SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MsgCode {
private static final Logger logger = Logger(MsgCode.class);
public static String getMsg(int args) {
return getMsg(String.valueOf(code),args);
}
public static String getMsg(String 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) {
<( 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.ls.MsgCode][50] 系统内部错误
[2019-08-28 11:14:25][INFO ][com.hsbc.gbm.hss.ls.MsgCode][51] 账号(Cloudy)不存在
[2019-08-28 11:14:25][WARN ][com.hsbc.gbm.hss.ls.MsgCode][52] 账号(Cloudy)已过期,过期时间:2019-08-28
例⼦2:(转:)
import java.beans.PropertyDescriptor;
import flect.Method;
import java.util.Map;
import Matcher;
import Pattern;
/**
* Java 占位符替换⼯具类
*
*/
public class Test4_Zhanweifu {
private static final Pattern pattern = Patternpile("\\{(.*?)\\}");
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 = up();
String keyclone = key.substring(1, key.length() - 1).trim();
Object value = (keyclone);
if (value != null)
tagerStr = place(key, String());
}
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 = up();
String keyclone = key.substring(1, key.length() - 1).trim();
try {
pd = new PropertyDescriptor(keyclone, Class());
getMethod = pd.getReadMethod();// 获得get⽅法
Object value = getMethod.invoke(obj);
if (value != null)
tagerStr = place(key, String());
} catch (Exception e) {
// TODO Auto-generated catch block
// Loggers.addException(e);
java valueof}
}
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 = up();
String keyclone = key.substring(1, key.length() - 1).trim();
Object value = (keyclone);
if (value != null)
tagerStr = place(key, String());
}
return tagerStr;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论