格式化字符串 - 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;}
}

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

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);
  • 有参数构造器

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

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();}
  • String.format方式使用
 String height = String.format("What is your height %s cm", 175);System.out.println("height = " + height);

格式化字符串 - Formatter相关推荐

  1. python格式化字符串漏洞_Python新型字符串格式漏洞分析及解决方案

    最近一个python字符串格式化的漏洞引起了我的注意,今天就来说一下Python引入的一种格式化字符串的新型语法的安全漏洞进行了深入的分析,并提供了相应的安全解决方案. 当我们对不可信的用户输入使用s ...

  2. Bash字符串处理(与Java对照) - 18.格式化字符串

    From: http://codingstandards.iteye.com/blog/1198098 In Java class Formatter 参见:http://download.oracl ...

  3. python 字符串%和format_Python必懂知识点,格式化字符串,到底用.format还是%

    第一次听说格式化,是清理电脑磁盘时,以为格式化就是清空一切,重回自由,后来才知道,格式化,是另一种妥协. 以下部分节选自<编写高质量代码:改善Python程序的91个建议>一书,需要该书电 ...

  4. printf格式化字符串_Java printf()–将格式化的字符串打印到控制台

    printf格式化字符串 We've already discussed Java println() method in a previous tutorial. Today, we'll disc ...

  5. 在格式化字符串的边缘试探

    格式化字符串 format string基本介绍 此漏洞由printf类函数在使用时直接使用用户可控字符串作为格式化字符串使用所导致.如printf(s),在运行时,用户可以通过给予s特殊的值造成程序 ...

  6. java 补齐字符串_使用String.format()格式化字符串,java自动补全自增长字符串

    JDK1.5中,String类新增了一个很有用的静态方法String.format(): format(Locale l, String format, Object... args) 使用指定的语言 ...

  7. Python输出格式化 格式化字符串语法 format f-string 格式化操作符% 数据类型转换 对齐方式 转换标志字符

    Python输出格式化 格式化字符串语法 1.format 1.1 Format String Syntax 格式字符串语法 str.format() 方法和 Formatter 类共享相同的格式字符 ...

  8. 使用C++ ostringstream来格式化字符串输出

    在Linux C中,我们通常使用snprintf来格式化字符串输出,但是有一个问题,就是可能会频繁申请大的缓冲区,并且无法实现字符串的动态增加,比如你定义的字符缓存为100个字节,如果你格式化以后的内 ...

  9. 零基础入门学习Python(14)-格式化字符串

    什么是格式化字符串 格式化字符串就是按照统一的规格去输出一个字符串,如果规格不统一,就很可能造成误会 format()方法 接受位置参数和关键字参数两种参数 二者均传递到一个replacement的字 ...

最新文章

  1. 【VS Code】更改默认的单击打开文档模式
  2. nn.LayerNorm的参数
  3. 【转】HashTable 和 HashMap的区别
  4. Mac OS使用技巧十八:Safari碉堡功能之一制作Widget
  5. 对比 | Python中超级好用的“列表解析式”、“字典解析式”、“集合解析式”
  6. 梨花带雨播放器程序开源版本
  7. 电脑亮度多少对眼睛好_激光治疗近视眼大概要多少费用,保护好眼睛要做到哪几点...
  8. 自组网中继台_家庭组网无线漫游方案--Mesh 组网
  9. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.1.1
  10. 如何用电脑查看自己的IP地址
  11. 11年艺术学习“转投”数学,他出版首本TensorFlow中文教材,成为蚂蚁金服技术大军一员...
  12. LaTeX定义新命令
  13. vue中Echart如何打包下载图片
  14. 每秒订单数25倍提升,蘑菇街怎样跨过海量服务架构的技术藩篱?
  15. 模拟CS (警察和匪徒)
  16. 光通量发光强度照度亮度关系_光通量、发光强度、照度单位的关系
  17. SQL 中的时间格式
  18. ext4 文件系统和XFS文件系统的对比
  19. Revit二开--批量修改视图范围(revit宏)
  20. 【转载】开源中最好的Web开发的资源

热门文章

  1. 百家号社会领域怎么写
  2. 拳王虚拟项目公社:一个持续收益的虚拟资源平台三种虚拟资源项目
  3. 基于PBOC电子钱包的圈存过程详解A
  4. 安卓手机卡顿怎么解决_安卓手机卡顿的问题,终于解决了
  5. 在Eclipse中用JDBC连接Sqlnbsp;Se…
  6. NFS4中小企业存储实战
  7. 如何让T61笔记本上的显卡nvs140m支持CUDA
  8. Python实现贝叶斯优化器(Bayes_opt)优化随机森林回归模型(RandomForestRegressor算法)项目实战
  9. 手机关闭java 功能吗,赶紧关闭手机这功能,不然你将后悔莫及
  10. PM如何在简历上展现自己的实力?