/**
     * 需要引入com.alibaba.fastjson.1.2.8
     * 两种调用方式
     * 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写法
     * 两个结果都是"我是loogn,今年22了"
     * arguments[0].getClass().getName() == String.class.getName()
     */
    public static String format(String str, Object ... arguments) {
        if(arguments.length>0){
            if(arguments.length==1 && arguments[0] instanceof String){//{name:"loogn",age:22}
                try{
                    @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());//注意正则写法
                    }
                }catch(Exception e){//解决 ("我是{0},今年了","whaozl") bug
                    str = str.replaceAll("\\{0\\}", arguments[0].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);
    }

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

  1. Java 和JavaScript实现C#中的String.format效果

    1.Java实现      /**      * 需要引入com.alibaba.fastjson.1.2.8     * String result2=HuaatUtil.format(templa ...

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

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

  3. SpringBoot整合Swagger2案例,以及报错:java.lang.NumberFormatException: For input string: ""原因和解决办法

    原文链接:https://blog.csdn.net/weixin_43724369/article/details/89341949 SpringBoot整合Swagger2案例 先说SpringB ...

  4. java中的String.format使用

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

  5. js中String.prototype.format類似于.net中的string.formitz效果

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

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

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

  7. C#中的String.Format方法

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

  8. C#中的String.Format介绍

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

  9. java字符串格式化性能对比String.format/StringBuilder/+拼接

    String.format由于每次都有生成一个Formatter对象,因此速度会比较慢,在大数据量需要格式化处理的时候,避免使用String.format进行格式化,相反使用StringUtils.l ...

随机推荐

  1. 【MM系列】SAP ABAP 编辑字段出现:对象编辑中的错误

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 编辑字段出现: ...

  2. upload上传

    1>使用apache第三方控件commons-fileupload实现上传(引入jar包),能够极大的简化实现上传文件的代码量 2>能够实现文件的上传功能,当我们的项目中需要上传图片,文档 ...

  3. Laravel关联模型

    public $timestamps = false;//不存时间 1.多对多关联.如收藏.用户表users,产品表products,收藏中间表user_favorite_products.那么在用户 ...

  4. 简单nginx代理配置

    nginx.conf: # For more information on configuration, see:# * Official English Documentation: http:// ...

  5. Springboot---后台导出功能,easyExcel

    Sprintboot+vuejs+easyExcel实现excel导出功能 一.背景 前段时间,有个需求,想要做一个excel导出功能,用来把查询到的数据进行导出.第一次做,所以搜了大量的资料,分为两 ...

  6. hive与hbase的交互简要示意

    建表 create external table if not exists hive2hbase( id int, ---> 对应hbase的rowkey (即下面的:key) age int ...

  7. Spring使用注解实现AOP

    一.AspectJ概述 AspectJ是一个面向切面的框架,它扩展了Java语言.定义了AOP语法,能够在编译期提供代码的织入,它提供了一个专门的编译期用来生成遵守字节编码规范的Class文件. @A ...

  8. Spring 启动时加载资源

    Spring加载资源文件目前了解三种, @PostConstruct在Context加载完成之后加载.在创建各个Bean对象之前加载. 实现ApplicationRunner的run方法,Bean加载 ...

  9. HDU - 1711 A - Number Sequence(kmp

    HDU - 1711 A - Number Sequence   Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1 ...

  10. nginx+gunicorn/uwsgi+python web 的前世今生

    我们在部署 flask.django 等 python web 框架时,网上最多的教程就是 nginx+gunicorn/uwsgi 的部署方式,那为什么要这么部署呢,本文就来系统地解释这个问题. 必 ...