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 ...
随机推荐
- 【Jmeter】Request1输出作为Request2输入-后置处理器
[Jmeter]基础介绍-详细 接上文,继续介绍Jmeter,本文关注点为如何解决上文中提到的第一个问题,即: 需要实现Request1的返回作为Request2的RequestBody或Header ...
- 机器学习算法(三):基于horse-colic数据的KNN近邻(k-nearest neighbors)预测分类
机器学习算法(三):基于horse-colic数据的KNN近邻(k-nearest neighbors)预测分类 项目链接参考:https://www.heywhale.com/home/column ...
- 3.1 C/C++ 使用字符与指针
C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...
- C/C++ x64 Inline Hook 代码封装
Hook 技术常被叫做挂钩技术,挂钩技术其实早在DOS时代就已经存在了,该技术是Windows系统用于替代DOS中断机制的具体实现,钩子的含义就是在程序还没有调用系统函数之前,钩子捕获调用消息并获得控 ...
- 性价比超频我都要 两大内存绝技带来20%性能提升!技嘉雪雕Z790 AORUS LITE AX-W主板评测
一.前言:主打性价比.两大内存绝技加持的技嘉Z790主板 要说现在最主流的装机方案,那必然是13代酷睿+700系主板.我们此前曾测试过技嘉的Z790钛雕主板,独有的顶级表现让人印象深刻,不过近6K的价 ...
- [Java]ArrayList源码解析
ArrayList源码解析 1. 核心源码解读 package java.util; import java.util.function.Consumer; import java.util.func ...
- FreeSWITCH在session上执行定时挂机与取消
操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 日常开发中,会遇到需要在已存在的session上执行定时挂机和取消挂机的情况,今天整理下这方面的内容,我将从 ...
- NC20951 网络优化
题目链接 题目 题目描述 <梦三国2>是一款3D MOBA类网游.游戏继承<梦三国>的三国文化背景和基础玩法,并加入许多全新地图和全新竞技玩法.由于人气高,游戏在线人数与日俱增 ...
- Python中`yield`关键字详解
Python中`yield`关键字有什么用? Python中yield关键字有什么用? 它能做什么? 例如,我试图理解这段代码1: def _get_child_candidates(self, di ...
- Sigrok逻辑分析仪软件(基于CY7C68013A)
关于逻辑分析仪 逻辑分析仪在调试数字电路时是非常重要的工具. 其形式与示波器类似, 采集被检测信号的电平, 并绘制时序图进行分析. 逻辑分析仪和示波器的区别: 数字量和模拟量: 示波器采集的是模拟量, ...