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 ...
随机推荐
- errgroup的常见误用
errgroup想必稍有经验的golang程序员都应该听说过,实际项目中用过的也应该不在少数.它和sync.WaitGroup类似,都可以发起执行并等待一组协程直到所有协程运行结束.除此之外errgr ...
- 【二】强化学习之Parl基础命令--PaddlePaddlle及PARL框架{飞桨}
相关文章: [一]飞桨paddle[GPU.CPU]安装以及环境配置+python入门教学 [二]-Parl基础命令 [三]-Notebook.&pdb.ipdb 调试 [四]-强化学习入门简 ...
- paddleNLP-BUG和一些细节记录【一】
1.TypeError: isfile() takes 1 positional argument but 2 were given File "/root/miniconda3/envs/ ...
- C++ STL 标准模板库(容器总结)算法
C++ 标准模板库STL,是一个使用模板技术实现的通用程序库,该库由容器container,算法algorithm,迭代器iterator,容器和算法之间通过迭代器进行无缝连接,其中所包含的数据结构都 ...
- 遥感图像处理笔记之【Automatic Flood Detection from Satellite Images Using Deep Learning】
遥感图像处理学习(7) 前言 遥感系列第7篇.遥感图像处理方向的学习者可以参考或者复刻 本文初编辑于2023年12月29日 2024年1月24日搬运至本人博客园平台 文章标题:Automatic Fl ...
- app api 登录 流程 accessToken refreshToken 图解 过程分析
随着app 增长 带动了 api 的增长,有了api 总是离不开登录,怎么实现简单安全的登录过程至关重要. 不让用户每次超时都输入密码,不在客户端保存账号密码 ,用户体验与安全至关重要. 没有绝对的安 ...
- 小米WIFI 7路由器BE6500 Pro开箱
上次发帖与坛子里的网友们聊了小米的这款路由,正好今天拿到货了,所以来个开箱图,让其他彦祖们也见识见识小米家的路由产品. 以前买过小米家的路由器,但是当时就是买来尝鲜,这次咋的也是对WIFI 7的尝鲜吧 ...
- 心动了!iPhone 15 Pro超窄边框感受下:1.5mm破历史纪录 “跑马框”再见
综合目前已知爆料来看,iPhone 15系列将有7大升级.其中一个比较明显的直观变化是,新款iPhone全系边框都会更窄.iPhone 15 Pro.Pro Max的边框宽度仅为1.55mm,破历史记 ...
- Git企业开发控制理论和实操-从入门到深入(六)|多人协作开发
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- 【排序】什么都能排的C语言qsort排序详解【超详细的宝藏级别教程】深度理解qsort排序
[排序]什么都能排的C语言qsort排序详解[超详细的宝藏级别教程]深度理解qsort排序 作者: @小小Programmer 这是我的主页:@小小Programmer 在食用这篇博客之前,博主在这里 ...