原始的只提供从0开始的数字作为字符串占位符,做了个简单的扩展,支持用字符串作为占位符,
如 “ {:name} -- {:age} -- {:name} ”格式则模型可被顺利解析。
如 “ {:name} -- {:age} -- {:name} ”格式则模型可被顺利解析。
代码如下:
package demo;
import java.util.HashMap;
import java.util.Map;
public class MessageFormatDemo {
public static void main(String[] args) {
test1();
}
private static void test1() {
String pattern = "{:name} - {:age} - {:name}";
Map<String,Object> arguments = new HashMap<String, Object>(){{
put("name", "tom");
put("age", 23);
}};
String msg = MyMessageFormat.format(pattern, arguments);
System.out.println(msg);
}
}
class MyMessageFormat{
public static String format(String pattern, Map<String,Object> arguments){
String formatedStr = pattern;
for (String key : arguments.keySet()) {
formatedStr = formatedStr.replaceAll("\\{:"+key+"\\}", arguments.get(key).toString());
}
return formatedStr;
}
}
// --------------- 输出结果为 --------------
// tom - 23 - tom