MessageFormat.format 字符串的模板替换

Posted Mr_伍先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MessageFormat.format 字符串的模板替换相关的知识,希望对你有一定的参考价值。

项目目前在消息的模版,模版中需要替换很多参数,比方说“用户名”,“日期”等等。不过目前没有想到更好的替换参数的方法,所以目前只能使用一个比较简单的方式来实现。
这个方式太死板,参数对应必须要在代码中写死,若是在模版中多加一个参数,那么就要修改Java类中的代码,非常不好。临时凑合一下,以后想到更好的方式,在来实现。
以下为代码实现: 其实这个实现就是使用了MessageFormat这个类; String content
= "ab,cc,{名称},{密码},{日期},dd,ff"; String array[] = {userName, password, format.format(new Date())}; content = MessageFormat.format(content, array);
解释如下: content 中需要被替换的就是{}中的参数,array数组中存放的是对应的要替换的参数;使用MessageFormat方法的时候,需要要将这些参数的个数匹配正确,
并且数序要指定,否则匹配出错。这样就实现了参数的替换。很简单,也很死板。 MessageFormat:出自java.text包中;

 

具体代码如下:

package org.xiaowu.json.demo;

import java.text.MessageFormat;

import org.junit.Test;

public class MessageFormatDemo {
    
    @Test
    public void Test(){
        StringBuilder sb=new StringBuilder();
        sb.append("    insert into test_tb (");
        sb.append("        createTime, ");
        sb.append("        datefrom, ");
        sb.append("        dateto, ");
        sb.append("        name, ");
        sb.append("        intranetid, ");
        sb.append("        actualhour, ");
        sb.append("        planhour, ");
        sb.append("        status");
        sb.append("    ) values (");
        sb.append("        ‘‘{0}‘‘,");
        sb.append("        ‘‘{1}‘‘,");
        sb.append("        ‘‘{2}‘‘,");
        sb.append("        ‘‘{3}‘‘,");
        sb.append("        ‘‘{4}‘‘,");
        sb.append("        ‘‘{5}‘‘,");
        sb.append("        ‘‘{6}‘‘,");
        sb.append("        ‘‘{7}‘‘");
        sb.append("    )");
        String result=sb.toString();
        
        Object[] arr={"20170520","王五","张三","李四","111","222","333","ok"};
        String sql=MessageFormat.format(result, arr);
        System.out.println("sql:"+sql);
    }
    
}

运行结果:

INSERT INTO test_tb (
    createTime,
    datefrom,
    dateto,
    NAME,
    intranetid,
    actualhour,
    planhour,
    STATUS
)
VALUES
    (
        ‘20170520‘,
        ‘王五‘,
        ‘张三‘,
        ‘李四‘,
        ‘111‘,
        ‘222‘,
        ‘333‘,
        ‘ok‘
    )

 

以上是关于MessageFormat.format 字符串的模板替换的主要内容,如果未能解决你的问题,请参考以下文章

替换{0}为指定的字符串(MessageFormat)

MessageFormat理解,MessageFormat.format(Object obj)方法

巧用java的 MessageFormat来拼字符串

java.text.messageformat.format会影响效率吗

??????????????????????????? MessageFormat.format

MessageFormat使用记录