zoukankan      html  css  js  c++  java
  • Java程序中做字符串拼接时可以使用的MessageFormat.format

    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);
        }

  • 相关阅读:
    SQLServer中通过脚本内容查找存储过程
    TensorFlow学习笔记——节点(constant、placeholder、Variable)
    解决方案:System.InvalidOperationException: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。
    通过网页或Serverice远程系统网站(服务)所在服务器本地的应用程序(未成功)
    (MSSQL)sp_refreshview刷新视图失败及更新Table字段失败的问题解决
    创建自己的代码片段(CodeSnippet)
    vue 创建监听,和销毁监听(addEventListener, removeEventListener)
    vue 运行时报 dependency was not found:错误
    Git 本地创建分支并提交远程分支
    vue自定义组件(通过Vue.use()来使用)即install的使用
  • 原文地址:https://www.cnblogs.com/doudouxiaoye/p/5772845.html
Copyright © 2011-2022 走看看