String的format方法
摘自:http://xiongzhenhui.iteye.com/blog/940416
http://blueram.iteye.com/blog/441683
一.常规类型、字符类型和数值类型的格式说明符的语法如下:%[argument_index$][flags][width][.precision]conversion
可选的 argument_index 是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1___FCKpd___0quot; 引用,第二个参数由 "2___FCKpd___0quot; 引用,依此类推。
可选的 flags 是修改输出格式的字符集。有效标志的集合取决于转换类型。
可选 width 是一个非负十进制整数,表明要向输出中写入的最少字符数。
可选 precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。
所需的 conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集合取决于参数的数据类型。
1.格式化一个整数,位数不够向前补0(\d整数只能长度为10位)
String.format("%010d",123)则会转换成0000000123
2.格式化一个浮点数,整数位不够向前补0,小数位不够向后补0
String.format("%010.3f", new BigDecimal(123.0)).replace(".",""));(注意如果整个长度为9位.则长度要填写10(因为有.号)
3.格式化一个字符串.位数不够向后补空白
String.format("%10s","abc")(注意该方法不能格式化中文)
格式化含中文的用以下方法:
String content="java格式化";
String blank=" ";//一定长度空格
(content+blank).substring(0, 20- content.getBytes().length);
二.格式化日期(后缀字符是为 't' 和 'T' 转换定义)
String.format("%tY", new Date()) //2011
String.format("%tm", new Date()) //03
String.format("%tF", new Date()) //2011-03-04
String.format("%tR", new Date()) //15:49
String.format("%tT", new Date()) //15:49:34
String.format("%tc", new Date()) //星期五 三月 04 15:49:34 CST 2011
String.format("%tD", new Date()) //03/04/11
String.format("%td", new Date()) //04
以下转换字符用来格式化日期:
'B' 特定于语言环境的月份全称,例如 "January" 和 "February"。
'b' 特定于语言环境的月份简称,例如 "Jan" 和 "Feb"。
'h' 与 'b' 相同。
'A' 特定于语言环境的星期几全称,例如 "Sunday" 和 "Monday"
'a' 特定于语言环境的星期几简称,例如 "Sun" 和 "Mon"
'C' 除以 100 的四位数表示的年份,被格式化为必要时带前导零的两位数,即 00 - 99
'Y' 年份,被格式化为必要时带前导零的四位数(至少),例如,0092 等于格里高利历的 92 CE。
'y' 年份的最后两位数,被格式化为必要时带前导零的两位数,即 00 - 99。
'j' 一年中的天数,被格式化为必要时带前导零的三位数,例如,对于格里高利历是 001 - 366。
'm' 月份,被格式化为必要时带前导零的两位数,即 01 - 13。
'd' 一个月中的天数,被格式化为必要时带前导零两位数,即 01 - 31
'e' 一个月中的天数,被格式化为两位数,即 1 - 31。
以下转换字符用于格式化常见的日期/时间组合。
'R' 24 小时制的时间,被格式化为 "%tH:%tM"
'T' 24 小时制的时间,被格式化为 "%tH:%tM:%tS"。
'r' 12 小时制的时间,被格式化为 "%tI:%tM:%tS %Tp"。上午或下午标记 ('%Tp') 的位置可能与语言环境有关。
'D' 日期,被格式化为 "%tm/%td/%ty"。
'F' ISO 8601 格式的完整日期,被格式化为 "%tY-%tm-%td"。
'c' 日期和时间,被格式化为 "%ta %tb %td %tT %tZ %tY",例如 "Sun Jul 20 16:17:00 EDT 1969"。
以下是代码:
记住以下代码例子和上面日期中的'T'和'F',基本就够用了
import java.util.Date;
public class StringTest {
public static void main(String[] args) {
/* format格式说明符语法:%[argument_index$][flags][width][.precision]conversion
* 参数举例:
[argument_index$]: "1$" 第1个参数
[flags]: "0" , "" 填充字符,数字用"0"或"",字符串用""
[width]: "10","-10" 最后总宽度10,正数表示在前面添加,负数表示在后面添加。负数的情况一般只在字符串时才用
[.precision] : ".3" 小数点后保留3位小数,必须是浮点数类型参数才行
conversion: d 代表整数,f代表浮点数,s代表字符串,类型要匹配才行,否则报错 还有t转义的很多字符
*/
//为了能清楚地表示" ",我把结果中的空格换成了"@"
//整数 必须是整数才能转换
System.out.println(String.format("%010d",123)); //
System.out.println(String.format("%2$08d", -3123,-5566)); //-0005566
System.out.println(String.format("%1$9d", -31)); //@@@@@@-31
System.out.println(String.format("%1$09d", -31)); //-00000031
//数字分割
System.out.println(String.format("%,d",Integer.MAX_VALUE)); //2,147,483,647
System.out.println(String.format("%,f",Float.MAX_VALUE)); //340,282,346,638,528,860,000,000,000,000,000,000,000.000000
//浮点数 必须是浮点数才能转换
System.out.println(String.format("%020.3f", 12.3)); //0000000000000012.300
System.out.println(String.format("%1$.2f", 5689.0)); //5689.00
//字符串 和 单字符c
System.out.println(String.format("%-10s", "sss")); //sss@@@@@@@
System.out.println(String.format("%10s", "sss")); //@@@@@@@sss
System.out.println(String.format("%5c", 'v')); //@@@@v
//综合 日期处理
String s3= String.format("你的生日:%1$tF,现在的时间:%2$tT", new Date(),System.currentTimeMillis());
System.out.println(s3); //你的生日:2015-01-30,现在的时间:22:58:24
//格式化的位置
String str = "I love ni %s, you love me %s"; //当不标明参数时,将按顺序替换
String str2 = "I love ni %2$s, you love me %1$s";
System.out.println(String.format(str, "renjunjie","songliyu")); //I love ni renjunjie, you love me songliyu
System.out.println(String.format(str2, "renjunjie","songliyu")); //I love ni songliyu, you love me renjunjie
//数组的操作
Object[] sendData = new Object[4];
sendData[0] = Integer.valueOf(1);
sendData[1] = "172.12.1.2";
sendData[2] = Integer.valueOf(123);
sendData[3] = "testadfaerfa";
String sendDataString = String.format("%d,%s,%d,%s",(Object[]) sendData); //当不标明参数时,将按顺序替换
System.out.println(sendDataString); //1,172.12.1.2,123,testadfaerfa
}
}
String的format方法的更多相关文章
- 字符串格式化-String类format方法
常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象. format()方法有两种重载形式. 显示不同转换符实现不同数据类型到字符串的转换,如图所示: 测 ...
- 74、Salesforce的String的format方法
String placehodler = 'Hello {0} , {1} is cool!'; List<String> fillers = new String[]{'Jason',' ...
- Java中String类的format方法使用总结
可参考: http://www.cnblogs.com/fsjohnhuang/p/4094777.html http://kgd1120.iteye.com/blog/1293633 String类 ...
- VFP自定义函数StringFormat (仿.NET String.Format 方法)
VFP仿.NET String.Format 方法 将指定字符串中的每个{x}替换为相应值,并返回文本 *-- 调用格式 StringFormat("日期{2},字符{1}",&q ...
- php示例代码之类似于C#中的String.Format方法
php示例代码之类似于C#中的String.Format方法 原文来自于 http://stackoverflow.com/questions/1241177/c-string-format-equ ...
- Java中利用MessageFormat对象实现类似C# string.Format方法格式化
我们在写C#代码的时候常常会使用到string.Format("待格式化字符串{0},{1},....",参数1,参数2,...),来格式化字符串,特别是拼接字符的时候,这种方式使 ...
- java基础---->String和MessageFormat的format方法
这里介绍一下String和MessageFormat中的format方法的差异以及实现原理. String与MessageFormat的说明 一.两者的使用场景 String.format:for l ...
- java字符串格式化:String.format()方法的使用
转自:http://kgd1120.iteye.com/blog/1293633 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的读者应 ...
- C# String.Format的格式限定符与Format方法将多个对象格式化一个字符串原理
Format方法将多个对象格式化成一个字符串Format方法解析格式字符串的原理: (1).格式字符串中的{0}会被替换成格式字符串之后的第一个参数,以此类推 (2).Format方法解析格式字符串时 ...
随机推荐
- 转:使用Android API最佳实践
原文来自于:http://blog.jobbole.com/65170/ 写在前面 现在,Android应用程序中集成第三方API已十分流行.应用程序都有自己的网络操作和缓存处理机制,但是大部分比较脆 ...
- cf B. Making Sequences is Fun
http://codeforces.com/contest/373/problem/B 用二分枚举长度就可以. #include <cstdio> #include <cstring ...
- EMV卡复位应答的时间特性 ---ISO7816协议
1.冷复位的时间特性 图1 如图1所示: T0为200clk 从T0结束到RST变为高电平为40000-45000个clock 从RST变为高电平后,卡片必须在400-40000个clock之间应答, ...
- VS中的预先生成事件和后期生成事件
原文:VS中的预先生成事件和后期生成事件 在C#开发中,有时候需要在程序编译之前或之后做一些操作. 要达到这个目的,可以使用Visual Studio中的预先生成事件和后期生成事件. 下图是一个简单例 ...
- OI记忆口诀
splay_rotate: inline void rotate(splay_node *x){ splay_node *y,*z;int d1,d2; d1=get_parent(x,y);//三个 ...
- COJ 1008 WZJ的数据结构(八) 树上操作
传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=986 WZJ的数据结构(八) 难度级别:E: 运行时间限制:3000ms: ...
- VisualSVN Server仓库迁移到Linux(包含所有版本, 权限,用户信息)
公司开发服务器从Windows换成CentOS,所以要把原服务都转移到Linux下,MySQL.SMB的迁移都很顺利,但是SVN的转移却遇到了些问题,花费了三天时间,走了不少弯路,现在总算解决了SVN ...
- win7 清理系统
1. 先用CCleaner等第三方软件清理一下.2. 将用户文件.我的文档.我的音乐.我的视频.桌面等路径更改到非系统分区(文件也会一并移动过去)3. 将系统盘的系统还原占用空间比减小,将大部分虚拟内 ...
- Swift开发语法
Swift开发入门 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 Apple WWDC 发布 历史 2010 年 7 月,苹果开发者 ...
- Android中如何像 360 一样优雅的杀死后台服务而不启动
Android中,虽然有很多方法(API或者shell命令)杀死后台`service`,但是仍然有很多程序几秒内再次启动,导致无法真正的杀死.这里主要着重介绍如何像 360 一样杀死Android后台 ...