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. Python 实现专属字典生成器

    编写一个密码生成工具,这里我们使用弱密码与个性化数组组合形成一个定制字典,例如收集用户的姓名,昵称,QQ号手机号等资源,然后通过Python对搜集到的数据与弱密码进行结合,从而定制出属于某个人的专属密 ...

  2. Win32汇编:字符串浮点数运算过程

    整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...

  3. GDB调试程序 [补档-2023-07-19]

    gdb调试 ​ 它是gcc的调试工具,调试工具都能干什么就不多说了. 7-1生成调试信息 ​ 在使用gcc编译c/c++的程序时,需要在编译命令中加入 -g 这一参数,它可以为你显示函数名,变量名 等 ...

  4. centOS系统 迁移docker镜像及数据文件到指定目录

    话说我今天正在快乐的敲代码,突然看到IDE报警磁盘空间不足了,du -h 查看了一下磁盘占用情况,发现是自己的docker镜像全部放/var/lib/docker目录下 这个系统磁盘给根目录只分配了5 ...

  5. 解决SpringMVC项目Jquery引入不生效问题

    根据多方查询,总结Jquery不生效问题如下几种原因: web.xml中拦截了静态资源,但是springmvc配置文件没有对静态资源访问进行设置 <!-- <mvc:resources l ...

  6. Scrapy数据解析和持久化

    Scrapy框架的使用 - pySpider - 什么是框架? - 就是一个具有很强通用性且集成了很多功能的项目模板(可以被应用在各种需求中) - scrapy集成好的功能: - 高性能的数据解析操作 ...

  7. 知乎利用 JuiceFS 给 Flink 容器启动加速实践

    本文作者胡梦宇,知乎大数据架构开发工程师,主要负责知乎内部大数据组件的二次开发和数据平台建设. 背景 Flink 因为其可靠性和易用性,已经成为当前最流行的流处理框架之一,在流计算领域占据了主导地位. ...

  8. 长沙IT技术圈百万年薪大佬?是否存在?

    引子 不知不觉,IT技术圈开始流传起"百万年薪"的故事,有人问我,长沙有百万大佬么?其实我也不知道. 一 背景 长沙自古以来就是文风鼎盛之地,在今天也同样如此. 目前长沙有211. ...

  9. 【LGR-156-Div.3】洛谷网校 8 月普及组月赛 I & MXOI Round 1 & 飞熊杯 #2(同步赛)

    [LGR-156-Div.3]洛谷网校 8 月普及组月赛 I & MXOI Round 1 & 飞熊杯 #2(同步赛) \(T1\) luogu P9581 宝箱 \(100pts\) ...

  10. DS12C887时钟模块, STC89和STC12的代码实现

    DS12C887是时钟芯片DS12C885集成了电池和晶振的版本. 如果拆掉DS12C887的外壳, 能看到里面就是DS12C885. 功能特性 能输出世纪.年.月.日.时.分.秒等时间信息 集成电池 ...