博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Java程序中做字符串拼接时一定要记得的MessageFormat.format
阅读量:6483 次
发布时间:2019-06-23

本文共 1501 字,大约阅读时间需要 5 分钟。

Java里从来少不了字符串拼接的活,Java程序员也肯定用到过StringBuffer,StringBuilder,以及被编译器优化掉的+=。但这些都和下文要谈的无关。

比如有这样的字符串:

张三将去某地点找李四。

其中,张三某地点和李四都是可变的,比如张三变成王五,某地点变成纽约,李四变成赵六。于是整句变成:

王五将去纽约找赵六。

如果直接将张三,某地点和李四用变量替代,再拼接起来,可以达到目的。但是,代码不好写,也不好看,也不好维护。但是,我看过很多SQL拼接,HTML拼接都是这样做的。我自己以前也是这样,自从接触了MessageFormat.format之后才意识到有更好的形式。请看下面的代码:

String[] tdArr=...;           

String result=MessageFormat.format("<tr bgcolor='#cef'><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td></tr>", tdArr);

这段代码将把数组tdArr中的四个元素分别插入到{0},{1},{2},{3}的位置。

你看看,是不是这样形式和内容有效的分开了。容易想象,当元素增多时,这种方式优势很明显。

一件事有很多手段来达成,知道那种手段更好,是你经验的体现和专业化的特征。

补记:

如果字符串需要输出单引号',可以用两个单引号''进行转义,下面代码请参考:

public int insertToTest_tb(String createTime,String datefrom,String dateto,String name,String intranetid,String actualhour,String planhour,String status) throws Exception{

        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={createTime,datefrom,dateto,name,intranetid,actualhour,planhour,status};
        String sql=MessageFormat.format(result, arr);
        
        return this.getJdbcTemplate().update(sql);
    }

 

转载地址:http://fwbuo.baihongyu.com/

你可能感兴趣的文章
php替换颜色,php Hex RGB颜色值互换的使用
查看>>
PHP的Socket通信之UDP篇,PHP的Socket通信之UDP通信实例
查看>>
php array call,PHP通过_call实现多继承
查看>>
php代码写一串新年祝福,临时保存新年祝福的php+dede
查看>>
c语言替代php,Alternative operators and tokens(替代运算符和令牌)
查看>>
变频器matlab仿真模型,变频器matlab仿真模型
查看>>
sqoop java 调用,Sqoop简单使用及出现的问题
查看>>
关于php的运行环境 说法正确的是,以下哪一个是PHP的运行环境()A、JRUNB、IISC、APACHED、J2SDK...
查看>>
php框架 写sql语句的,ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
查看>>
php xml文件中有 amp,PHP中使用DOMDocument来处理HTML、XML文档
查看>>
自制php解释器,如何编写可以修改PHP解释器内部的自定义PHP扩展?
查看>>
oracle 脚本定时,Oracle存储过程定时执行2种方法
查看>>
oracle 捕获 语句,oracle9i 怎样自动捕获DML 语句
查看>>
oracle存储%3e,oracle 11g 使用ASM存储迁移
查看>>
eclipse php快捷键,EclipsePHP Studio快捷键
查看>>
oracle查看分区索引是否可用,【Oracle】error code [1502]; ORA-01502;索引的分区处于不可用状态...
查看>>
php的魔术常量trait,PHP基础-函数和魔术常量
查看>>
linux进程间通知,linux 进程间通信之消息传递
查看>>
Linux内核哪个版本有网络,Linux内核4.4版本带来的网络新特性
查看>>
linux不待机命令,linux实现显示器不休眠
查看>>