1、Java实现

     /**
     * 需要引入com.alibaba.fastjson.1.2.8     * String result2=HuaatUtil.format(template2, "{'name':'loogn','age':22}");//注意JSON写法     * 两个结果都是"我是loogn,今年22了"     * arguments[0].getClass().getName() == String.class.getName()
     * 两种调用方式
     * String template1="我是{0},今年{1}了";
     * String template2="我是{name},今年{age}了";

     * String result1=HuaatUtil.format(template1,"loogn",22);
     */
    public static String format(String str, Object ... arguments) {
        if(arguments.length>0){
            if(arguments.length==1 && arguments[0] instanceof String){//{name:"loogn",age:22}
                @SuppressWarnings("unchecked")
                Map<String, Object> map = (Map<String,Object>)JSON.parse(arguments[0].toString());
                for(Map.Entry<String,Object> entry : map.entrySet()){
                    str=str.replaceAll("\\{" + entry.getKey() + "\\}", entry.getValue().toString());//注意正则写法
                }
            }else {//"loogn",22);
                for(int i=0; i<arguments.length; i++){
                    if(arguments[i]!=null){
                        str = str.replaceAll("\\{" + i + "\\}", arguments[i].toString());
                    }
                }
            }
        }
        return str;
    }
    
    public static void main(String[] args) {
         String template1="我是{0},今年{1}了";
         String template2="我是{name},今年{age}了";
         String result1=HuaatUtil.format(template1,"loogn",22);
         String result2=HuaatUtil.format(template2, "{'name':'loogn','age':22}");//注意JSON写法
         System.out.println(result1 + "\n" + result2);
    }

     

2、JavaScript实现(有参考,谢谢http://www.jb51.net/article/43701.htm,源头找不到了)

/**
*两种调用方式
*var template1="我是{0},今年{1}了";
*var template2="我是{name},今年{age}了";
*var result1=template1.format("loogn",22);
*var result2=template2.format({name:"loogn",age:22});
*两个结果都是"我是loogn,今年22了"
*/
String.prototype.format = function (args) {
    var result = this;
    if (arguments.length > 0) {
        if (arguments.length == 1 && typeof (args) == "object") {
            for (var key in args) {
                if (args[key] != undefined) {
                    var reg = new RegExp("({" + key + "})", "g");
                    result = result.replace(reg, args[key]);
                }
            }
        }
        else {
            for (var i = 0; i < arguments.length; i++) {
                if (arguments[i] != undefined) {
                    //var reg = new RegExp("({[" + i + "]})", "g");//这个在索引大于9时会有问题,谢谢何以笙箫的指出
                    var reg = new RegExp("({)" + i + "(})", "g");
                    result = result.replace(reg, arguments[i]);
                }
            }
        }
    }
    return result;

}

最新文章

  1. CUDA中Bank conflict冲突
  2. [LeetCode]题解(python):120 Triangle
  3. Dennis与Ken爷爷的UNIX/C世界
  4. Android学习笔记之使用百度地图实现路线规划+公交信息检索
  5. 【uoj2】 NOI2014—起床困难综合症
  6. iOS 工作遇到问题记录
  7. 简单的聊天程序,主要用到的是Socket
  8. Ios 给imageview 添加手势没有反应
  9. HTML基本概念
  10. 浅谈HTML5拖放
  11. 制作简易计算器处理过程Servlet
  12. MySQL各模块工作配合
  13. 将CSV文件写入MySQL
  14. 系统功能调用Windows操作系统原理实验
  15. 死锁的原因及解决办法RLock递归锁
  16. CPUFreq驱动
  17. WMS和WMTS的区别
  18. css 如何使图片与文字在div中居中展示?
  19. 20145310《网络对抗》注入shellcode及Return-to-libc
  20. iOS开发-多线程之GCD(Grand Central Dispatch)

热门文章

  1. 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(一)
  2. C++学习笔记-多态
  3. Java字节流文件封装
  4. PostgreSQL unlogged表
  5. (5.10)mysql高可用系列——percona-toolkit工具下的pt-table-checksum 在线验证主从一致性【续写中】
  6. 从入门到自闭之Python高阶函数
  7. CE修改器使用教程 [入门篇]
  8. SQL学习(二)之四大查询语句以及标准写法
  9. 数据绑定-POJO对象绑定参数
  10. 部署master节点组件