Java开发中String.format的妙用
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的妙用的更多相关文章
- 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...
- Java开发中使用sort排序
Java开发中使用sort排序 BaiduSpring https://baijiahao.baidu.com/s?id=1625440912158830354&wfr=spider& ...
- JAVA字符串格式化String.format()的使用
JAVA字符串格式化-String.format()的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprin ...
- Java开发中文件读取方式总结
JAVA开发中,免不了要读文件操作,读取文件,首先就需要获取文件的路径. 路径分为绝对路径和相对路径. 在文件系统中,绝对路径都是以盘符开始的,例如C:\abc\1.txt. 什么是相对路径呢?相对路 ...
- java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...
- Java开发中常见的危险信号(上)
本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...
- JAVA字符串格式化-String.format()的使用 【生成随机数补0操作】
转: JAVA字符串格式化-String.format()的使用 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的s ...
- [ 转载 ] Java开发中的23种设计模式详解(转)
Java开发中的23种设计模式详解(转) 设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类 ...
- Java开发中代码规范有哪些?
Java开发中所要遵守的编码规范大体上有如下7点.命名规范.注释规范.缩进排版规范.文件名规范.声明规范.语句规范以及编程规范. 1.命名规范 (1)所有的标示符都只能用ASCⅡ字母(A-Z或a-z) ...
- Java开发中常用jar包整理及使用
本文整理了我自己在Java开发中常用的jar包以及常用的API记录. <!-- https://mvnrepository.com/artifact/org.apache.commons/com ...
随机推荐
- Python 实现专属字典生成器
编写一个密码生成工具,这里我们使用弱密码与个性化数组组合形成一个定制字典,例如收集用户的姓名,昵称,QQ号手机号等资源,然后通过Python对搜集到的数据与弱密码进行结合,从而定制出属于某个人的专属密 ...
- Win32汇编:字符串浮点数运算过程
整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...
- GDB调试程序 [补档-2023-07-19]
gdb调试 它是gcc的调试工具,调试工具都能干什么就不多说了. 7-1生成调试信息 在使用gcc编译c/c++的程序时,需要在编译命令中加入 -g 这一参数,它可以为你显示函数名,变量名 等 ...
- centOS系统 迁移docker镜像及数据文件到指定目录
话说我今天正在快乐的敲代码,突然看到IDE报警磁盘空间不足了,du -h 查看了一下磁盘占用情况,发现是自己的docker镜像全部放/var/lib/docker目录下 这个系统磁盘给根目录只分配了5 ...
- 解决SpringMVC项目Jquery引入不生效问题
根据多方查询,总结Jquery不生效问题如下几种原因: web.xml中拦截了静态资源,但是springmvc配置文件没有对静态资源访问进行设置 <!-- <mvc:resources l ...
- Scrapy数据解析和持久化
Scrapy框架的使用 - pySpider - 什么是框架? - 就是一个具有很强通用性且集成了很多功能的项目模板(可以被应用在各种需求中) - scrapy集成好的功能: - 高性能的数据解析操作 ...
- 知乎利用 JuiceFS 给 Flink 容器启动加速实践
本文作者胡梦宇,知乎大数据架构开发工程师,主要负责知乎内部大数据组件的二次开发和数据平台建设. 背景 Flink 因为其可靠性和易用性,已经成为当前最流行的流处理框架之一,在流计算领域占据了主导地位. ...
- 长沙IT技术圈百万年薪大佬?是否存在?
引子 不知不觉,IT技术圈开始流传起"百万年薪"的故事,有人问我,长沙有百万大佬么?其实我也不知道. 一 背景 长沙自古以来就是文风鼎盛之地,在今天也同样如此. 目前长沙有211. ...
- 【LGR-156-Div.3】洛谷网校 8 月普及组月赛 I & MXOI Round 1 & 飞熊杯 #2(同步赛)
[LGR-156-Div.3]洛谷网校 8 月普及组月赛 I & MXOI Round 1 & 飞熊杯 #2(同步赛) \(T1\) luogu P9581 宝箱 \(100pts\) ...
- DS12C887时钟模块, STC89和STC12的代码实现
DS12C887是时钟芯片DS12C885集成了电池和晶振的版本. 如果拆掉DS12C887的外壳, 能看到里面就是DS12C885. 功能特性 能输出世纪.年.月.日.时.分.秒等时间信息 集成电池 ...