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. 使用rman备份将rac环境恢复到单实例

    使用rman备份将rac环境恢复到单实例 rac环境 [oracle@rac02 ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomai ...

  2. 添加 @ResponseBody出现错误的问题

    maven配置: <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>ja ...

  3. Kubernetes中的PV和PVC

    K8S引入了一组叫作Persistent Volume Claim(PVC)和Persistent Volume(PV)的API对象,大大降低了用户声明和使用持久化Volume的门槛.在Pod的Vol ...

  4. JVM配置参数解析

    1.参数说明(部分,待完善) -Xms128M:JVM初始分配的堆内存 -Xmx256M:JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M: JVM初始分配的非堆内存 -XX:M ...

  5. Linux常用目录名称

    目录 用途 / 虚拟目录的根文件,通常不会在这里存储文件 /bin 二进制目录,存放许多用户的GNU工具 /boot 启动目录,存放启动文件 /dev 设备目录,Linux在这里创建设备节点 /etc ...

  6. java,mysql触发器,redis生成流水号(yyyyMM000)

    最近又遇到需要根据日期生成流水号的业务,然后记录了几种生成方法,一个是通过java代码,一个是数据库的触发器,还有是通过redis.下面是代码: 通过java生成简易流水: /** * 通过日期和生成 ...

  7. Rsyslog收集应用日志

    收集系统其它服务日志,在客户端node1 上操作,示例以openstack-nova 服务的日志为例: 1.先修改配置文件 /etc/rsyslog.conf,完整内容如下: [root@node1 ...

  8. Solve the Equation

    Solve a given equation and return the value of x in the form of string "x=#value". The equ ...

  9. java中利用hanlp比较两个文本相似度的步骤

    使用 HanLP - 汉语言处理包 来处理,他能处理很多事情,如分词.调用分词器.命名实体识别.人名识别.地名识别.词性识别.篇章理解.关键词提取.简繁拼音转换.拼音转换.根据输入智能推荐.自定义分词 ...

  10. 前端开发工具包 WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧

    ​ 前端开发工具包WijmoJS在2019年的第一个主要版本2019V1已经发布,本次发布包括了更加易用的在线Demo系统.各控件新增功能.NPM 包的改动,以及全新的浏览器API组件. WijmoJ ...