format方法是String类中的一个方法,主要作用是用来格式化字符串。当前做

的一个功能当中,刚好用到了这个方法,代码处理起来非常简便。因此就写篇博客

记录下来。

  分析使用场景:前端App需要根据不同的数据类型展示不同的文案信息,总共

分为六七种数据类型,而且每一种文案展示信息都需要动态组装时间和名称信息。比如

xxxx时间做了xxxx名称的事情。有两个地方需要进行信息的动态填充,其他固定的

文案信息也不相同,这个需求该怎么做的?

  确定解决方案:自己首先能够想到的就是使用StringBuilder进行拼接,因为使用

这个类不会创建过多的对象,效率也比较高。使用StringBuilder的缺点就是可能会有

很多的if/else,即使是使用switch语句,分支也会比较多。自己在想有没有什么更

简便的方法。无意中和同事聊天的时候,他提供一种方案,可以考虑使用String.format()

方法试试。

  开始开发:确定方案之后,自己首先使用if/else if/else的方式把代码写出来,不是太友好

看上去不雅观,不过先保证能使用。之后开始尝试使用同事推荐的新方法,写好之后发现代码

非常地简洁。最后还是打算采用新方案,使用String.format()的方式来做,然后在搭配一个枚举类,

在枚举类中可以定义多个值,第一个值可以定义未数据类型,第二个值可以定义为需要转换的字符串。

处理数据时,可以通过数据类型获取对应的枚举,然后获取到需要处理的字符串,最后通过

String.format()传入需要处理的字符串和处理的数据,这样简化下来之后,只剩下几行代码,并且

字符串是提前定义好的,效率也不会太差。示例如下,

public enum DataTypeEnum {

DATA_TYPE_ONE("ONE", "%s的性别是%s, 籍贯为%s"),

DATA_TYPE_TWO("TWO", "%s的性别是%s, 籍贯为%s"),

DATA_TYPE_THREE("THREE", "%s的性别是%s, 籍贯为%s")

;

/*

* 替换内容

*/

private String content;

/*

* 代码

*/

private String code;

public String code() {

return this.code;

};

public String content() {

return this.content;

};

/*

* 枚举类的定义方式

*/

DataTypeEnum(String code, String content){

this.code = code;

this.content = content;

}

public static DataTypeEnum fromValue(String value) {

return MAPS.get(value);

}

private static final Map<String, DataTypeEnum> MAPS =

Maps.uniqueIndex(Arrays.asList(DataTypeEnum.values()), DataTypeEnum::code);

}

测试代码如下:

public class StringTest {

public static void main(String[] args) {

String result = String.format("%s的性别是%s, 籍贯为%s", "小明", "男", "广东深圳");

System.out.println("result--->" + result);

}

}

说明:测试代码中文案是一样的,真实项目中有多种不同类型的文案信息。可以根据实际需要来确定文案。

测试结果为

如果有更好建议的小伙伴,欢迎留言讨论。

Java开发中String.format的妙用的更多相关文章

  1. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  2. Java开发中使用sort排序

    Java开发中使用sort排序 BaiduSpring https://baijiahao.baidu.com/s?id=1625440912158830354&wfr=spider& ...

  3. JAVA字符串格式化String.format()的使用

    JAVA字符串格式化-String.format()的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprin ...

  4. Java开发中文件读取方式总结

    JAVA开发中,免不了要读文件操作,读取文件,首先就需要获取文件的路径. 路径分为绝对路径和相对路径. 在文件系统中,绝对路径都是以盘符开始的,例如C:\abc\1.txt. 什么是相对路径呢?相对路 ...

  5. java开发中遇到的问题及解决方法(持续更新)

    摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...

  6. Java开发中常见的危险信号(上)

    本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...

  7. JAVA字符串格式化-String.format()的使用 【生成随机数补0操作】

    转: JAVA字符串格式化-String.format()的使用 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的s ...

  8. [ 转载 ] Java开发中的23种设计模式详解(转)

    Java开发中的23种设计模式详解(转)   设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类 ...

  9. Java开发中代码规范有哪些?

    Java开发中所要遵守的编码规范大体上有如下7点.命名规范.注释规范.缩进排版规范.文件名规范.声明规范.语句规范以及编程规范. 1.命名规范 (1)所有的标示符都只能用ASCⅡ字母(A-Z或a-z) ...

  10. Java开发中常用jar包整理及使用

    本文整理了我自己在Java开发中常用的jar包以及常用的API记录. <!-- https://mvnrepository.com/artifact/org.apache.commons/com ...

随机推荐

  1. VLE基于预训练文本和图像编码器的图像-文本多模态理解模型:支持视觉问答、图文匹配、图片分类、常识推理等

    VLE基于预训练文本和图像编码器的图像-文本多模态理解模型:支持视觉问答.图文匹配.图片分类.常识推理等 多模态预训练模型通过在多种模态的大规模数据上的预训练,可以综合利用来自不同模态的信息,执行各种 ...

  2. 深度学习应用篇-计算机视觉-图像分类[3]:ResNeXt、Res2Net、Swin Transformer、Vision Transformer等模型结构、实现、模型特点详细介绍

    深度学习应用篇-计算机视觉-图像分类[3]:ResNeXt.Res2Net.Swin Transformer.Vision Transformer等模型结构.实现.模型特点详细介绍 1.ResNet ...

  3. 基于队列实现生产者消费者(Python)

    # 进城之间数据隔离 # 进程之间通信(IPC) Inter Process communication # 基于文件 :同一台机器上的多个进程之间通信 # Queue 队列 # 基于socket的文 ...

  4. XmlDocument 解决 Clone、CloneNode、ImportNode 等节点克隆后的标签自闭合问题

    前言: 这两天在对 Taurus.Mvc 做 html 加载性能优化时,发现存在这个问题. 具体优化的是 CYQ.Data 组件的 XHtmlAction 相关类. 问题过程: 之前 XmlDocum ...

  5. JOISC 2019 记录

    Day1 T1 Examination 三维数点板子题,直接 cdq分治+树状数组,时间复杂度 \(O(n\log^2n)\). Day1 T2 Meetings 对于一个大小为 \(n\) 的树,我 ...

  6. Java 21 虚拟线程如何限流控制吞吐量

    虚拟线程(Virtual Threads)是 Java 21 所有新特性中最为吸引人的内容,它可以大大来简化和增强Java应用的并发性.但是,随着这些变化而来的是如何最好地管理此吞吐量的问题.本文,就 ...

  7. 从零开始手写 mybatis(二)mybatis interceptor 插件机制详解

    前景回顾 第一节 从零开始手写 mybatis(一)MVP 版本 中我们实现了一个最基本的可以运行的 mybatis. 常言道,万事开头难,然后中间难. mybatis 的插件机制是 mybatis ...

  8. 大米新闻微信小程序和Springboot新闻管理系统项目源码

    介绍 本项目分为大米news小程序端和springboot新闻管理系统后台项目.小程序主要用来新闻展示,后台管理系统用于提供相关新闻API. 项目源码 参考:https://www.bilibili. ...

  9. BUG管理系统(Mantis)迁移实战

    Mantis迁移实战 名词解释 Mantis:  开源的BUG管理平台Mantis,也做MantisBT.           同档次产品有EasyBUG,QC,BugFree,Bugzila. Xa ...

  10. SpringBoot+Shiro+LayUI权限管理系统项目-1.项目介绍

    1.项目介绍 本项目旨在打造一个基于RBAC架构模式的通用的.并不复杂但易用的权限管理系统.通过本项目可以较好的理解权限系统的常见业务同时学习掌握Springboot和Shiro等诸多技术点.需要的朋 ...