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;

}

Java 和JavaScript实现C#中的String.format效果的更多相关文章

  1. Java 实现C#中的String.format效果 解决("我是{0},今年了","whaozl") bug

        /**      * 需要引入com.alibaba.fastjson.1.2.8      * 两种调用方式      * String template1="我是{0},今年{1 ...

  2. php示例代码之类似于C#中的String.Format方法

    php示例代码之类似于C#中的String.Format方法 原文来自于  http://stackoverflow.com/questions/1241177/c-string-format-equ ...

  3. java中的String.format使用

         format(String  format, Objece...  argues)函数相当于C语言中的printf函数,但是相对来说更灵活.      和C中的printf函数差不多,在fo ...

  4. Javascript中的String.format方法实现

    <script type='text/javascript'> String.format = function() { var s = arguments[0]; for (var i ...

  5. C#中的String.Format方法(转)

    一.定义String.Format是将指定的 String类型的数据中的每个格式项替换为相应对象的值的文本等效项. 如: (1)string p1 = "Jackie";strin ...

  6. C#中的String.Format方法

    定义String.Format是将指定的String类型的数据中的每个格式项替换为相应对象的值的文本等效项.(1)string p1="xiaomeng";string p2=&q ...

  7. C#中的String.Format介绍

    关键字:C# string.format作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/11/15/csharp-string_for ...

  8. js中的string.format

    String.prototype.format = function(args) { var result = this; if (arguments.length > 0) { if (arg ...

  9. Jquery 中使用String.Format

    第一种方法: String.format = function() { if (arguments.length == 0) return null; var str = arguments[0]; ...

随机推荐

  1. PTA --- 天梯赛 L1-028 判断素数

    L1-028 判断素数 (10 point(s))   本题的目标很简单,就是判断一个给定的正整数是否素数. 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2​31​ ...

  2. OpenStack组件——Nova计算资源管理

    1.nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. ...

  3. 【转帖】msvcp100.dll和msvcr100.dll

    VS发布软件时去除msvcp100.dll和msvcr100.dll图解说明 https://blog.csdn.net/yu__jia/article/details/82753262 msvcp. ...

  4. (5.12)mysql高可用系列——复制中的在线切换GTID模式/增加节点/删除节点

    目录 [0]需求 前提,已经假设好基于传统异步复制的主库和从库1. [0.1]传统异步切换成基于GTID的无损模式 [0.2]增加特殊要求的从库 [1]操作环境 [2]构建 复制->半同步复制 ...

  5. 内存溢出之PermGen space异常解决

    1.出现的异常: java.lang.OutOfMemoryError: PermGen space at sun.misc.Launcher$ExtClassLoader.getExtClassLo ...

  6. kafka安装使用配置1.1

    官方文档 rz上传到/usr/local/下 解压 tar xzvf 文件 改名 mv 文件 名字 环境变量 vi /etc/profile export KAFKA_HOME=/usr/local/ ...

  7. 2018.08.14【2018提高组】模拟A组 比赛总结

    题解 这次的A组难得得水. T1 这题我一看,就想起了GDOI的一道题--密码锁 \(O(n)\)算法--差分 于是乎兴奋地发现这道题可以用差分来解. 设\(f_i=a_i-a_{i-1}\). 然后 ...

  8. Windows 系统安装 Docker

    详细方法参见官方文档. Win10 家庭版 安装Toolbox Win10 家庭版由于功能限制,不能直接安装 Docker for Windows, 需要使用 Toolbox 的形式进行安装. 确认版 ...

  9. Linux中使用curl命令发送带参数的get请求和post请求

    GET 请求 curl命令 + 请求接口的地址 curl http://**.**.***.**/SeedAgile/SeedApi/querySprintByRequirementNo?parame ...

  10. linux安装git服务器和svn服务器

    linux版本 linux版本为CentOS 6.8 (要注意有些软件的安装方法在各个linux版本之间也是存在差异的) git服务器 git服务器需要提供一个UI供开发人员创建项目管理项目,选择使用 ...