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‘
    )
时间: 2024-10-12 21:25:02

MessageFormat.format 字符串的模板替换的相关文章

字符串模板替换方法 MessageFormat.format

String content = "ab,cc,{名称},{密码},{日期},dd,ff"; String array[] = {userName, password, format.format(new Date())}; content = MessageFormat.format(content, array); 解释如下: content 中需要被替换的就是{}中的参数,array数组中存放的是对应的要替换的参数:使用MessageFormat方法的时候,需要要将这些参数的个数

字符串模版替换的方法MessageFormat.format(String pattern, Object ... arguments)

MessageFormat.format(String pattern, Object ... arguments) MessageFormat.format(NewOrderConstant.PAY_SCHEMA, URLEncoder.encode(MessageFormat.format(NewOrderConstant.RESULT_SCHEME, String.valueOf(orderId)), HTTP.UTF_8), URLEncoder.encode(MessageFormat

C#读取Word模板替换相应的字符串(标签)生成新的Word

在平常工作中,生成word的方式主要是C#读取html的模板文件处理之后保存为.doc文件,这样的好处是方便,快捷,能满足大部分的需求.不过有些特殊的需求并不能满足,如要生成的Word为一个表格,只是一部分字符串需要变化,用上面的方法生成Word表格容易变形.如果我们能读取一个word模板,把模板里定义的固定字符串如{标记1}替换为想要的文字,然后生成新的word.这样生成的Word非常整洁. 查找了网上许多方法,虽然都是调用office的接口,并没有一个好的方案.通过自己的实验,比较,使用Mi

【Java】字符串模板替换

原文:[Java]字符串模板替换 源代码下载地址:http://www.zuidaima.com/share/1593989887085568.htm 自己封装的工具类中的一个小方法. String str = "大象说它会{0}死,蚂蚁说它会{0}死"; template(str,"胖", "瘦"); 输出: 大象说它会胖死,蚂蚁说它会瘦死 代码请下载. 可以用一些模板语言实现,不过这个代码很好的诠释了模板的机制,赞一个. 参考如下代码: 自己

关于java中MessageFormat.format中单引号问题

我们知道java中可以用MessageFormat.format来格式化字符串.这个方法在我们的实际开发中经常用到,有点类似模板,这样我们就不需要用很恶心的拼接字符串了.如下面 String s1="my blogWebSite is {0} and sinaWeiBo is {1} "; String s2=MessageFormat.format(s1,"http://www.3lai8.com","http://weibo.com/javaee6&q

Java魔法堂:初探MessageFormat.format

一.前言 刚开始从.net的转向java的时候总觉得 String.format 用得不习惯,希望格式模版会这样 {0}, this is {1}'s cat.{1},this is {0}'s dog. 而不是 %1$s,this is %2$s's cat.%2$s,this is %1$s's dog. .后来发现 java.text.MessageFormat.format 可以满足我这个小小的愿望. 二.静态方法 java.text.MessageFormat.format    方法

ThinkPHP模板替换

该替换操作仅针对内置的模版引擎 __ROOT__: 会替换成当前网站的地址(不含域名) __APP__: 会替换成当前应用的URL地址 (不含域名) __MODULE__:会替换成当前模块的URL地址 (不含域名) __CONTROLLER__(__或者__URL__ 兼容考虑): 会替换成当前控制器的URL地址(不含域名) __ACTION__:会替换成当前操作的URL地址 (不含域名) __SELF__: 会替换成当前的页面URL __PUBLIC__:会被替换成当前网站的公共目录 通常是

编写一个简单的js模板替换工具 rtt----replace templete tool

最近一段时间在修改自己的个人在线简历.  这个在线简历用到了css3来制作3D的旋转效果, 因此会有兼容性问题, 针对于不支持css3的3D透视的浏览器, 比如 IE,  360等等, 我使用的是另一套css文件兼容.  针对于移动端浏览器, 尽管基本都是webkit内核, 但经测试发现3D效果并不流畅, 因此移动端是识别userAgent切换到另一套非3D页面.  因为没用任何数据库, 那么问题就来了, 移动端和pc端两套页面是共用的一套数据, 我想到的方法有两个: 一是页面加载之后用ajax

Thinphp模板替换

模板替换 在进行模板输出之前,系统还会对渲染的模板结果进行一些模板的特殊字符串替换操作,也就是实现了模板输出的替换和过滤.模板替换适用于所有的模板引擎,包括原生的PHP模板.这个机制可以使得模板文件的定义更加方便,默认的替换规则有: ../Public: 会被替换成当前项目的公共模板目录 通常是 /项目目录/Tpl/当前主题/Public/ __TMPL__: 会替换成项目的模板目录 通常是 /项目目录/Tpl/当前主题/ (注:为了部署安全考虑,../Public和__TMPL__不再建议使用