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. 快递单信息抽取【二】基于ERNIE1.0至ErnieGram + CRF预训练模型

    相关文章: 1.快递单中抽取关键信息[一]----基于BiGRU+CR+预训练的词向量优化 2.快递单信息抽取[二]基于ERNIE1.0至ErnieGram + CRF预训练模型 3.快递单信息抽取[ ...

  2. 疾速7600MT/s!KELVV科赋CRAS V RGB DDR5内存图赏

    12月18日消息,KLEVV科赋日前推出新款大容量DDR5内存套装,满足游戏玩家.内容创作者和高端PC爱好者的需求. 现在,KLEVV科赋CRAS V RGB内存套装已经来到我们评测室,下面为大家带来 ...

  3. CF763E Timofey and our friends animals题解

    题目链接:CF 或者 洛谷 简单来说就是求 \([l,r]\) 这些点都存在的情况下,连通块的数量,看到七秒时限,而且每个点相连的边数很少,可以想到离线下来使用莫队类的算法解决 连通块问题,一般可以考 ...

  4. 1.变量和简单的数据类型--《Python编程:从入门到实践》

    1.1 变量 在Python中使用变量时,需要遵守一些规则和指南. 变量名只能包含字母.数字和下划线.变量名可以字母或下划线打头,但不能以数字打 头. 变量名不能包含空格,但可使用下划线来分隔其中的单 ...

  5. axios.delete传参,400错误

    我在使用axios.delete进行传参的时候,发现会报400错误 后端代码(C#) 前端代码 这样的参数请求会报400错误 后端就一个参数,前端发一个id为什么接受不到呢? 在网上找了半天,终于明白 ...

  6. Buffer Queue原理

    BufferQueue详解 原理一.BufferQueue 简介在工作中,我们经常会和Surface,ImageReader,ImageWriter BufferQueue打交道,它们之间是什么关系呢 ...

  7. IPFS Gateway Selector IPFS下载网关选择工具

    简介 用IPFS作文件分享可以覆盖很多场景, 现在IPFS网关也相当多了, 但是因为国内网络的状况, 不同网关在不同网络运营商的表现差别很大, 导致你提供的下载链接在对方那里可能速度很慢, 甚至无法访 ...

  8. 解决Burpsuite1.6中文显示乱码问题

    说明 最近公司项目被测试团队测试出有越权访问等安全问题,用的是这个Burpsuit工具,我想做软件测试的同学应该很熟悉.那么中间在模拟请求响应过程中发现返回的信息中文是乱码,搜索了一圈发现很多人提供的 ...

  9. 如何设置 vcpkg 依赖特定编译器

    最近项目要部署到 gitlab-ci 上,所以远程机器上也要安装好编译环境 在相关的环境安装完后,发现编译项目时提示找不到三方库的符号文件 看到这个错误的第一反应就是依赖库的版本不对,因为远程机器上不 ...

  10. win32 - Redirect Input and Output

    如果要将exe的输出重定向到cmd,则可以使用匿名管道将子进程的标准输入和输出句柄重定向.请注意,命名管道也可以用于重定向进程I / O //CMD.exe #include <windows. ...