【转】String.format详解

一、前言                            

   String.format 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s""John");

,下面将笔记整理并记录下来。

 

二、重载方法                          

// 使用当前本地区域对象(Locale.getDefault())格式化字符串String String.format(String fmt, Object... args);// 自定义本地区域对象格式化字符串
String String.format(Locale locale, String fmt, Object... args);

 

三、占位符                                   

  占位符完整格式为: %[index$][标识]*[最小宽度][.精度]转换符 。

  针对不同数据类型的格式化,占位符的格式将有所裁剪。

  % ,占位符的其实字符,若要在占位符内部使用%,则需要写成 %% 。

  [index$] ,位置索引从1开始计算,用于指定对索引相应的实参进行格式化并替换掉该占位符。

  [标识] ,用于增强格式化能力,可同时使用多个 [标识] ,但某些标识是不能同时使用的。

  [最小宽度] ,用于设置格式化后的字符串最小长度,若使用 [最小宽度] 而无设置 [标识] ,那么当字符串长度小于最小宽度时,则以左边补空格的方式凑够最小宽度。

  [.精度] ,对于浮点数类型格式化使用,设置保留小数点后多少位。

  转换符 ,用于指定格式化的样式,和限制对应入参的数据类型。

 

四、对字符、字符串进行格式化                    

  占位符格式为: %[index$][标识][最小宽度]转换符 

  示例——将"hello"格式化为"  hello"

String raw = "hello";
String str = String.format("%1$7s", raw);
// 简化
//String str = String.format("%7s", raw);

  示例——将"hello"格式化为"hello  "

String raw = "hello";
String str = String.format("%1$-7s", raw);
// 简化
//String str = String.format("%-7s", raw);

可用标识:

   -,在最小宽度内左对齐,右边用空格补上。

可用转换符:

   s,字符串类型。

   c,字符类型,实参必须为char或int、short等可转换为char类型的数据类型,否则抛IllegalFormatConversionException异常。

   b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。

   n,平台独立的换行符(与通过 System.getProperty("line.separator") 是一样的)

 

五、对整数进行格式化                       

  占位符格式为: %[index$][标识]*[最小宽度]转换符 

  示例——将1显示为0001

int num = 1;
String str = String.format("%04d", num)

  示例——将-1000显示为(1,000)

int num = -1000;
String str = String.format("%(,d", num)

可用标识:

复制代码
-,在最小宽度内左对齐,不可以与0标识一起使用。
0,若内容长度不足最小宽度,则在左边用0来填充。
#,对8进制和16进制,8进制前添加一个0,16进制前添加0x。
+,结果总包含一个+或-号。
空格,正数前加空格,负数前加-号。
,,只用与十进制,每3位数字间用,分隔。
(,若结果为负数,则用括号括住,且不显示符号。
复制代码

可用转换符:

b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。
d,整数类型(十进制)。
x,整数类型(十六进制)。
o,整数类型(八进制)
n,平台独立的换行符, 也可通过System.getProperty("line.separator")获取

 

六、对浮点数进行格式化                        

   占位符格式为: %[index$][标识]*[最小宽度][.精度]转换符 

   示例:

double num = 123.4567899;
System.out.print(String.format("%f %n", num)); // 123.456790 
System.out.print(String.format("%a %n", num)); // 0x1.edd3c0bb46929p6 
System.out.print(String.format("%g %n", num)); // 123.457

可用标识:

复制代码
-,在最小宽度内左对齐,不可以与0标识一起使用。
0,若内容长度不足最小宽度,则在左边用0来填充。
#,对8进制和16进制,8进制前添加一个0,16进制前添加0x。
+,结果总包含一个+或-号。
空格,正数前加空格,负数前加-号。
,,只用与十进制,每3位数字间用,分隔。
(,若结果为负数,则用括号括住,且不显示符号。
复制代码

可用转换符:

复制代码
b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。
n,平台独立的换行符, 也可通过System.getProperty("line.separator")获取。
f,浮点数型(十进制)。显示9位有效数字,且会进行四舍五入。如99.99。
a,浮点数型(十六进制)。
e,指数类型。如9.38e+5。
g,浮点数型(比%f,%a长度短些,显示6位有效数字,且会进行四舍五入)
复制代码

 

七、对日期时间进行格式化                      

   占位符格式为: %[index$]t转换符 

   示例:

Date now = new Date();
String str = String.format("%tF", now); // 2014-10-12

可用转换符

  1. 日期的转换符

复制代码
c,星期六 十月 27 14:21:20 CST 2007
F,2007-10-27
D,10/27/07
r,02:25:51 下午
T,14:28:16
R,14:28
b, 月份简称
B, 月份全称
a, 星期简称
A, 星期全称
C, 年前两位(不足两位补零)
y, 年后两位(不足两位补零)
j, 当年的第几天
m, 月份(不足两位补零)
d, 日期(不足两位补零)
e, 日期(不足两位不补零)
复制代码

  2. 时间的转换符

复制代码
H, 24小时制的小时(不足两位补零)
k, 24小时制的小时(不足两位不补零)
I, 12小时制的小时(不足两位补零)
i, 12小时制的小时(不足两位不补零)
M, 分钟(不足两位补零)
S, 秒(不足两位补零)
L, 毫秒(不足三位补零)
N, 毫秒(不足9位补零)
p, 小写字母的上午或下午标记,如中文为“下午”,英文为pm
z, 相对于GMT的时区偏移量,如+0800
Z, 时区缩写,如CST
s, 自1970-1-1 00:00:00起经过的秒数
Q, 自1970-1-1 00:00:00起经过的豪秒
复制代码

 

八、其他转换符                          

 <,用于格式化前一个转换符所描述的参数。

 示例:

int num = 1000;
String str = String.format("%d %<,d", num);
// 结果"1000 1,000

来源: http://www.cnblogs.com/fsjohnhuang/p/4094777.html#a2


来自为知笔记(Wiz)


转载于:https://www.cnblogs.com/jeffen/p/6054747.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs2010帮助文件安装完全攻略

1.第一种情况&#xff0c;安装时自动安装了help viewer这个就比较方便了&#xff0c;只需要第一次选择一个合适的位置&#xff0c;将Iso里面的文件安装进来即可&#xff0c;几乎就是傻瓜式的下一步 2.安装s2010时没有安装&#xff0c;之后又使用过帮助文件&#xff0c;这个东西…

java node websocket_nodejs怎么实现webSocket接口即时通讯服务?

websocket工作方式:广播和收听 # 使用场景:金融/聊天室/……websocket:服务器支持广泛(node/java/php/c#……) 原生API操作复杂 可以使用第三方模块:socket.io 是在websocket的基础上创建的模块 优点:简单下载服务器端npm i socket.io客户端使用// 工作方式:事件绑定与事件触发…

java与sql2005连接数据库_Java链接数据库SQl Server2005

Java链接数据库SQL Server2005步骤&#xff1a;1.到微软官方网站下载2005的jdbc并解压&#xff0c;获得文件sqljdbc.jar。本人使用的是sqljdbc_1.2&#xff0c;解压后即为该文件。sql jdbc 1.2下载地址&#xff1a;2.将sqljdbc.jar拷贝到C:\Program Files\Java\jre1.5.0_08\lib…

Microsoft Team Foundation Server 2010安装指南

索引:介绍安装操作系统准备安装过程中的需要的用户账户安装IIS 7.0安装SQL Server 2008安装SQL Server 2008 SP1补丁安装TFS 2010配置TFS 2010&#xff08;以高级配置为例&#xff09;配置TFS Build服务安装序列号 正文&#xff1a; 介绍&#xff1a;微软官方发布了Microsoft T…

IE本地网页弹出黄条“限制网页脚本”

Internet选项 高级——点选“允许活动内容在我的计算机上的文件中运行”

java提高班_2020年最新天码营-Java提高班,资源教程下载

课程名称2020年最新天码营-Java提高班&#xff0c;资源教程下载课程介绍初学者先广在精&#xff0c;关注代码背后的实现&#xff0c;关注内功修炼&#xff0c;了解实现原理和思想&#xff0c;形成自己完整的技术体系&#xff0c;知识成片之后就容易触类旁通&#xff0c;进步的速…

Swift3.0语言教程替换子字符串

Swift3.0语言教程替换子字符串 Swift3.0语言教程替换子字符串,替换子字符串其实就是将字符串中的子字符串删除&#xff0c;然后再进行添加。为了让这一繁琐的过程变的简单&#xff0c;NSString提供了替换子字符串的3个方法&#xff0c;这3个方法分别为&#xff1a;replacingOcc…

反射的使用

//加载dll库Assembly dll Assembly.LoadFile("E:\whq\code\Test\DLLConsole\bin\Debug\Test.UI.dll");//获取所有类型&#xff08;类、接口……&#xff09;Type[] typeClass dll.GetTypes();foreach (Type t in typeClass){//获取所有公共成员FieldInfo[] fields …

7-10外连接查询

外连接&#xff1a; 至少返回一个表中的所有记录&#xff0c;根据匹配条件有选择性的返回另一张表的记录。 外连接特点&#xff1a; 1&#xff1a;参与外连接的表有主从之分。 2&#xff1a;以主表的每行数所匹配的从表的数据列将符合条件的数据值直接返回到结果集中。 3:对那些…

java调用dubbo服务器_dubbo源码分析-服务端注册流程-笔记

前面&#xff0c;我们已经知道&#xff0c;基于spring这个解析入口&#xff0c;到发布服务的过程&#xff0c;接着基于DubboProtocol去发布&#xff0c;最终调用Netty的api创建了一个NettyServer。那么继续沿着RegistryProtocol.export这个方法&#xff0c;来看看注册服务的代码…

React - S1

资料&#xff1a; 1. https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 进度&#xff1a; 教程 - 高级内容remaining; 参考remaining js 与 的区别[转] 1、对于string,number等基础类型&#xff0c;和是有区别的 1&#xff09;不同类型间比较&#xff0c;之比较“转…

java错位_java – 如何保护自己免受参数错位的影响

假设我有这个重要的方法&#xff1a;int generateId(int clientCode, int dataVersion) {return clientCode * 2 dataVersion % 2;}这两个参数都是int,因此使用错误的参数调用此方法非常容易,例如generateId(dataVersion,clientCode).它将被成功编译和执行.但生成的id将完全错…

(csc)Visual C# 2010 编译器选项.

Visual C# 2010 编译器选项 - 输出文件 -/out:<文件> 指定输出文件名(默认值: 包含主类的文件或第一个文件的基名称)/target:exe 生成控制台可执行文件(默认) (缩写: /t:exe)/target:winexe …

力扣Java解数独_LeetCode 力扣 37. 解数独

题目描述(困难难度)给定一个数独棋盘&#xff0c;输出它的一个解。解法一 回溯法从上到下&#xff0c;从左到右遍历每个空位置。在第一个位置&#xff0c;随便填一个可以填的数字&#xff0c;再在第二个位置填一个可以填的数字&#xff0c;一直执行下去直到最后一个位置。期间如…

T-SQL像数组一样处理字符串、分割字符串,遍历数组

T-SQL对字符串的处理能力比较弱&#xff0c;比如我要循环遍历象1,2,3,4,5这样的字符串&#xff0c;如果用数组的话&#xff0c;遍历很简单&#xff0c;但是T-SQL不支持数组&#xff0c;所以处理下来比较麻烦。下边的函数&#xff0c;实现了象数组一样去处理字符串。 一、按指定…

jquery 获取鼠标和元素的坐标点

获取当前鼠标相对img元素的坐标[javascript] view plaincopy $(img).mousemove(function(e) { varpositionXe.pageX-$(this).offset().left; //获取当前鼠标相对img的X坐标 varpositionYe.pageY-$(this).offset().top; //获取当前鼠标相对img的Y坐标 console…

java上转型对象特点_Java 浅析三大特性之一继承

上文Java 浅析三大特性之一封装我们说到Java是一个注重编写类&#xff0c;注重于代码和功能复用的语言。Java实现代码复用的方式有很多&#xff0c;这里介绍一个重要的复用方式——继承。在介绍继承之前&#xff0c;我们要明确一点&#xff0c;继承是一个比较复杂的编写类的方式…

并口学习之一

1.由于windows并不是一个实时控制系统,通过并口只能最大输出100Khz的脉冲频率.这对于普通电机来说已经足够了. 但是如果对可支持200Khz及以上的电机来说,这真是个不好的消息.USB口等输出脉冲的最大速度可无限提高了.这变由外部接口卡的性能决定了.因此有些USB口卡支持最大脉冲输…

MSSQL优化之————探索MSSQL执行计划

原文链接&#xff1a;http://blog.csdn.net/no_mIss/archive/2006/11/09/1374978.aspx 作者&#xff1a;no_mIss QQ:34813284 时间&#xff1a;2006.11.07 23:30:00 环境&#xff1a;win2003 mssql2005 最近总想整理下对MSSQL的一些理解与感悟&#xff0c;却一直没有心思和…

java web的动静分离_Apache结合Tomcat实现动静分离的方法

实验环境Apache和Tomcat均安装在IP地址为192.168.153.136的主机上 主机操作系统为centos7 实验之前关闭防火墙 ,命令&#xff1a; systemctl stop firewalld 关闭seliunx &#xff0c;命令&#xff1a;setenforce 0 实验效果为Apache处理html静态资源&#xff0c;Tomcat处理jsp…