/**
     * 需要引入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. SQL- 将一张表的数据插入到另一张表,表结构不一致(加条件)

    公司业务需要,在对表进行操作的时候将操作人和操作记录记录到日志表里.记录下来以供参考和学习. 首先准备两张测试表:Info以及InfoLog 1.表结构相同的情况下: insert into Info ...

  2. MaxScale中间件部署数据库读写分离

    操作系统:CentOS7 (Core) 数据库:MariaDB-10.2.6-linux-glibc_214-x86_64 MaxScale服务器:192.168.40.134 主服务器:192.16 ...

  3. FastAdmin-T

    FastAdmin 注意食用姿势,建议先通读官方文档一次,在看 根据环境及配置的不同,仅作参考 修改mysql表注释ALTER TABLE student COMMENT '学生表'; fastadm ...

  4. C# AE 通过要素类工作空间将shp路径string类型对象转换为IFeatureClass;

    IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();//打开shapefile工作空间openFile ...

  5. eclipse中出现错误 Syntax error, insert "}" to complete Block

    结果原因如下 划红线的地方多出来类似于空格的占位符,也许这样看不清楚. 我们来显示空格.制表符和回车键. Window->Preferences->General->Editors- ...

  6. 【DSP开发】HyperLink 编程和性能考量

    冯华亮/Brighton Feng---Communication Infrastructure 摘要 HyperLink 为两个 KeyStone 架构 DSP 之间提供了一种高速,低延迟,引脚数量 ...

  7. 获取JSON中所有的KEY

    采用递归的方式,遍历JSON中所有的KEY. JSON格式如下: {"username":"tom","age":18,"addr ...

  8. 【STM32】STM32串口配置的一般步骤(库函数)

    STM32串口配置的一般步骤(库函数)(1)串口时钟使能:RCC_APBxPeriphClockCmd();    GPIO时钟使能:RCC_AHBxPeriphClockCmd();(2)引脚复用映 ...

  9. PTA(Basic Level)1048.数字加密

    本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余--这里用 J 代表 ...

  10. Logger Rate Limiter

    Design a logger system that receive stream of messages along with its timestamps, each message shoul ...