String.format() 方法详解
场景:我们在实际开发中很多字符串以及数字等等格式都是需要动态改变的,即不同用户某些地方展现出不同的数据。这个时候我们就需要用到字符串格式化。这时候就有疑问了,我们使用字符串拼接也是可行的,那为什么一定要使用字符串格式化呢?答案很简单:更加人性化,举个例子:
//展示的内容组成为:目录A(资源a)-目录B(b资源)
//普通的字串符拼接
responseDTO.setCatalogMessage(entity.getCatalogOne() + "(" + entity.getResourceOne() + ")-" + entity.getCatalogTwo() + "(" + entity.getResourceTwo() + ")");
//使用字符串格式化
responseDTO.setCatalogMessage(String.format("%s(%s)-%s(%s)", entity.getCatalogOne(), entity.getResourceOne(), entity.getCatalogTwo(), entity.getResourceTwo()))
后者在于能一目了然地知道你写的格式,能够更快读懂你想要干嘛。
String.format() 共有两个重载的方法,都是静态方法,可以直接 String.format() 调用:
方法声明 | 功能介绍 |
---|---|
static String format(String format, Object… args) | 使用指定的格式字符串和参数返回格式化字符串 |
static String format(Locale l, String format, Object… args) | 使用指定的语言环境,格式字符串和参数返回格式化的字符串 |
常用的占位符类型
转换符 | 参数类型 | 说明 |
---|---|---|
%s | 字符串类型 | 对字符串进行格式化输出,最常用,如:“我真真的是小白” |
%c | 字符类型 | 对字符进行格式化输出,如:‘a’ |
%d | 整数类型(十进制) | 对整数进行格式化输出,较常用,如:99 |
%x | 整数类型(十六进制) | 十六进制,如:DD |
%o | 整数类型(八进制) | 八进制,如:66 |
%b | 布尔类型 | 对布尔类型进行格式化输出,如:true 和 false |
%f | 浮点类型 | 对浮点数进行格式化输出,如:3.141500 |
%a | 十六进制浮点类型 | 以十六进制输出浮点数,如:0x1.921fb4d12d84ap1 |
%e | 指数类型 | 以科学计数法输出浮点数,如:3.141500e+00 |
%% | 百分比类型 | 百分号本身 |
%n | 换行符 | 换行符 |
其中最常用的即为 %s ,%d、%f 也较常用,其他在用的时候百度就行
String.format("%s来自%s, 在%s上学", "张三", "杭州", "杭州电子科技大学");// 张三来自杭州, 在杭州电子科技大学上学
String.format("error: code=%d,message=%s,url=%s", 500, "服务器内部错误", "localhost:8080/index.html");// error: code=500,message=服务器内部错误,url=localhost:8080/index.html
String.format("%c字母的后面是%c", 'a', 'b');// a字母的后面是b
String.format("%b是错误的,%b是正确的", false, true);// false是错误的,true是正确的
String.format("π约等于:%f", 3.1415);// π约等于:3.141500
String.format("十六进制π约等于:%a", 3.1415);// 十六进制π约等于:0x1.921cac083126fp1
String.format("科学计数法π约等于:%e", 3.1415);// 科学计数法π约等于:3.141500e+00
String.format("Hive数据库中like的用法为:%s like concat('%%','%s','%%')", "name", "张三");// Hive数据库中like的用法为:name like concat('%','张三','%')
String.format("换行%n");// 换行