格式化字符串 - Formatter
【摘要】
格式化字符串 - Formatter
1.前言
当我们需要对一段文本中某些关键词进行特定格式替换时,使用格式化Formatter类提供的方法可以实现文本内容的替换。
2.Formatter...
格式化字符串 - Formatter
1.前言
当我们需要对一段文本中某些关键词进行特定格式替换时,使用格式化Formatter类提供的方法可以实现文本内容的替换。
2.Formatter类的一个小Demo
2.1. demo示例
使用Formatter替换SQL语句的可变参数,输出一个可变的sql语句。
public class SqlHandler {
private final String INSERT_SQL_TEMP = "INSERT INTO `%s`.`%s` (%s) VALUES(%s)";
public String getInsertSql(SqlContext sqlContext) {
//1.创建sql语句:INSERT INTO `%s`.`%s` (%s) VALUES(%s)
String sql = new Formatter()
.format(INSERT_SQL_TEMP,
sqlContext.getDatabase()
,sqlContext.getTable()
,sqlContext.columnName()
,sqlContext.params()
).toString();
//2.返回sql语句
return sql;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
2.2.Formatter Demo介绍
1.new Formatter():创建Formatter()对象。
2.format(String str,Object ...args) : 方法接收两个参数,第一个参数是需要格式化的字符串,第二个格式化参数依次将第一个参数的字符串占位符进行替换。
3.上面Demo实现的功能就是用接收的参数依次替换SQL中%s占位符的内容,实现创建可变的sql语句功能。
- sql语句中
- 第一个%s:database
- 第二个%s:table
- 第三个%s:table字段名称
- 第四个%s:参数值
//1.创建sql语句:INSERT INTO `%s`.`%s` (%s) VALUES(%s)
String sql = new Formatter()
.format(INSERT_SQL_TEMP,
sqlContext.getDatabase()
,sqlContext.getTable()
,sqlContext.columnName()
,sqlContext.params()
).toString();
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
3. Formatter类介绍
3.1.Formatter构造器
- 无参构造器
创建一个无参的Formatter构造器,默认将字符串存放在StringBuilder 中,通过toString() 方法输出字符串内容。
// 无参数构造Formatter对象
Formatter formatter = new Formatter();
// 格式化操作
formatter.format("I lover you is %s.", face);
// toString()获取格式化字符串
String str = formatter.toString();
// 输出格式化字符串.
System.out.println(str);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 有参数构造器
public Formatter(Appendable a) 构造器参数表示格式化输出的目的地
3.2. format方法
public Formatter format(String format, Object… args)
- format - 待格式化字符串,通过格式化符号进行占位取代相应位置的内容。
- args - 多个参数对象,其内容将依次对应format中的占位符(格式化说明符),根据指定的内容格式填充到指定位置,从而形成一个满足要求的字符串。
String sql = "INSERT INTO `%s`.`%s` (%s) VALUES(%s)";
new Formatter()
.format(sql ,
sqlContext.getDatabase()
,sqlContext.getTable()
,sqlContext.columnName()
,sqlContext.params()
).toString();
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
3.3.格式化说明符
3.3.1.格式
%[argument_index$][flags][width][.precision]conversion
3.3.2.格式说明
- argument_index$:指定对应的内容参数位置,默认按照顺序依次对应。
- flags:格式控制。
- width:区域宽度。
- .precision:对于浮点型数据,表示显示的小数位数;对于字符串数据,表示显示的字符数量。
- conversion:类型转换字符。
3.3.3.格式控制(flags)
符号 | 作用 | 示例 | 效果 |
---|---|---|---|
无负号 | 右对齐 | formatter.format("***%8d***", 1000); | *** 1000*** |
有负号“-” | 左对齐 | formatter.format("***%-8d***", 1000); | ***1000 *** |
有加号“+” | 正数前显示正号 负数前显示负号 |
formatter.format("***%+8d***", 1000); formatter.format("***%+8d***", -1000); |
*** +1000*** *** -1000*** |
有空格“ ” | 正数前显示空格 负号前显示负号 |
formatter.format("***% 8d***", 1000); formatter.format("***% 8d***", -1000); |
*** 1000*** *** -1000*** |
有零“0” | 使用0填充剩余位置 | formatter.format("***%08d***", 1000); | 00001000 |
有逗号“,” | 每3位数字添加一个逗号 | formatter.format("***%,8d***", 1000); | *** 1,000*** |
3.3.4.类型转换字符
符号 | 类型 | 示例 | 效果 |
---|---|---|---|
d | 整数型(十进制) | formatter.format("%d", 1000); | 1000 |
o | 整数型(八进制) | formatter.format("%o", 1000); | 1750 |
x | 整数型(十六进制) | formatter.format("%x", 1000); | 3e8 |
f | 浮点型(十进制) | formatter.format("%f", 1000.0); | 1000.000000 |
e | 浮点型(科学计数) | formatter.format("%e", 1000.0); | 1.000000e+03 |
b | 布尔型 | formatter.format("%b", true); | true |
c | 字符型 f | ormatter.format("%c", ‘A’); | A |
s | 字符串型 | formatter.format("%s", “String”); | String |
% | 字符“%” | formatter.format("%d%%", 100); | 100% |
3.4. String.format方法
String类中也有个format方法,该方法就是调用了Formatter类的format方法,使用String类提供的format方法省去了实例化Formatter类对象,操作更加简洁。
- String.format代码实现
public static String format(String format, Object... args) {
return new Formatter().format(format, args).toString();
}
- 1
- 2
- 3
- String.format方式使用
String height = String.format("What is your height %s cm", 175);
System.out.println("height = " + height);
- 1
- 2
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/105703726
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)