首页 > 编程语言 >Java开发中String.format的妙用

Java开发中String.format的妙用

时间:2022-11-28 21:44:53浏览次数:41  
标签:code Java String format content public 文案

  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);

    }

}

说明:测试代码中文案是一样的,真实项目中有多种不同类型的文案信息。可以根据实际需要来确定文案。

测试结果为

 

如果有更好建议的小伙伴,欢迎留言讨论。

标签:code,Java,String,format,content,public,文案
From: https://www.cnblogs.com/yilangcode/p/16933723.html

相关文章

  • Java学习八
    一.小结1.类是对象的模板。它定义对象的属性,并提供创建对象的构造方法以及对对象进行操作的方法。2.类也是一种数据类型。可以用它声明对象引用变量。对象引用变量中似乎......
  • java n皇后问题 详细源代码 并且把结果一一打印出来了
    packageNqueen;importjava.util.Scanner;publicclassnQueen{publicstaticintvrb1;//定义一个全局变量用来使用publicstaticvoidmain(String[]args){Scan......
  • javaSE基础-语法基础
    基础语法Java语言出现于1991年,JDK1.0版本正式发布于1995年Java之父:JamesGosling(詹姆斯•高斯林)Java是一种面向对象的编程语言Java语言是一种编译解释型语言Java语......
  • javaSE基础-目录导航
    目录导航+语法基础+数组+面向对象(OOP)-接口-抽象-内部类+异常+集合-泛型+其他常用类-时期时间-比较器-字符串+IO流+多线程+网络编程+......
  • java泛型机制
    泛型概述泛型使用的必要性泛型类泛型接口泛型对象引用传递的解决方案泛型方法泛型的简单应用---本文中将介绍泛型的基础知识以及简单应用,后面还计划......
  • java泛型机制(基础知识总结篇)
    泛型概述泛型使用的必要性泛型类泛型接口泛型对象引用传递的解决方案泛型方法泛型的简单应用---本文中将介绍泛型的基础知识以及简单应用,后面还计划......
  • 从 Java 到 Kotlin - 介绍 Kotlin
    B站视频:​​https://www.bilibili.com/video/BV1Ti4y197u9/?share_source=copy_web&vd_source=74448386fecd6b0affd408eabb573749​​语法层面可空对象(和C#的<Nullable>......
  • Java8 Function 用法简介
    publicclassFunctionTest{publicstaticvoidmain(String[]args){Function<Numbers,Integer>test1=i->i.getN1()-i.getN2();Funct......
  • Java.11.28
    一.递归1.递归就是:A方法调用A方法!就是自己调用自己2.递归的能力在于用有限的语句来定义对象的无限集合3.递归结构包含两个部分:3.1.递归头:什么时候......
  • 【Java并发入门】01 并发编程Bug的源头
    一、根本原因「CPU、内存、磁盘之间的速度差异」为了能同时执行多个任务,CPU发展出时间片轮转、多核等CPU要从内存中读数据太慢了,所以给自己设置了缓存CPU读磁盘更......