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‘,基本就够用了

 1 import java.util.Date;
 2
 3
 4 public class StringTest {
 5
 6         public static void main(String[] args) {
 7 /*        format格式说明符语法:%[argument_index$][flags][width][.precision]conversion
 8  *         参数举例:
 9             [argument_index$]:  "1$"     第1个参数
10             [flags]:  "0" , ""       填充字符,数字用"0"或"",字符串用""
11             [width]: "10","-10"     最后总宽度10,正数表示在前面添加,负数表示在后面添加。负数的情况一般只在字符串时才用
12             [.precision]  : ".3"     小数点后保留3位小数,必须是浮点数类型参数才行
13             conversion:  d 代表整数,f代表浮点数,s代表字符串,类型要匹配才行,否则报错  还有t转义的很多字符
14 */
15             //为了能清楚地表示" ",我把结果中的空格换成了"@"
16
17             //整数   必须是整数才能转换
18             System.out.println(String.format("%010d",123));      //0000000123
19             System.out.println(String.format("%2$08d", -3123,-5566));  //-0005566
20             System.out.println(String.format("%1$9d", -31));   //@@@@@@-31
21             System.out.println(String.format("%1$09d", -31));  //-00000031
22
23             //数字分割
24             System.out.println(String.format("%,d",Integer.MAX_VALUE));  //2,147,483,647
25             System.out.println(String.format("%,f",Float.MAX_VALUE));  //340,282,346,638,528,860,000,000,000,000,000,000,000.000000
26
27             //浮点数   必须是浮点数才能转换
28             System.out.println(String.format("%020.3f", 12.3));   //0000000000000012.300
29             System.out.println(String.format("%1$.2f", 5689.0));   //5689.00
30
31             //字符串  和  单字符c
32             System.out.println(String.format("%-10s", "sss"));  //[email protected]@@@@@@
33             System.out.println(String.format("%10s", "sss"));   //@@@@@@@sss
34             System.out.println(String.format("%5c", ‘v‘));   //@@@@v
35
36
37             //综合 日期处理
38             String s3= String.format("你的生日:%1$tF,现在的时间:%2$tT", new Date(),System.currentTimeMillis());
39             System.out.println(s3);  //你的生日:2015-01-30,现在的时间:22:58:24
40
41             //格式化的位置
42             String str = "I love ni %s, you love me %s";   //当不标明参数时,将按顺序替换
43             String str2 = "I love ni %2$s, you love me %1$s";
44             System.out.println(String.format(str, "renjunjie","songliyu")); //I love ni renjunjie, you love me songliyu
45             System.out.println(String.format(str2, "renjunjie","songliyu"));   //I love ni songliyu, you love me renjunjie
46
47             //数组的操作
48             Object[] sendData = new Object[4];
49             sendData[0] = Integer.valueOf(1);
50             sendData[1] = "172.12.1.2";
51             sendData[2] = Integer.valueOf(123);
52             sendData[3] = "testadfaerfa";
53             String sendDataString = String.format("%d,%s,%d,%s",(Object[]) sendData);  //当不标明参数时,将按顺序替换
54             System.out.println(sendDataString);   //1,172.12.1.2,123,testadfaerfa
55         }
56 }
时间: 2024-12-28 15:48:58

String的format方法的相关文章

String的format方法--应用

格式化日期 //格式化日期 public static void main(String[] args) { String s = String.format("%1$tY-%1$tm-%1$td", new Date()); System.out.println(s); } 格式化日期2 //格式化日期2 public static void main(String[] args) { String s = String.format("%1$tY/%1$tm/%1$td&

String.format()方法使用说明

JDK1.5开始String类中提供了一个非常有用的方法String.format(String format, Object ... args) 查看源码得知其实是调用了Java.util.Formatter.format(String, Object...)方法 [java] view plain copy print? public static String format(String format, Object ... args) { return new Formatter().f

测试String.Format方法

今天想使用String.Format,和平时的用法不一样. 直接上代码: [Test] public void TestMethod6() { string A = "A"; string B = "B"; string C = "C"; string D = "{0}"; String str = String.Format(D, A, B, C); Assert.AreEqual(str, "A");

C#语言基础知识(4):C#中的String.Format方法

定义String.Format是将指定的String类型的数据中的每个格式项替换为相应对象的值的文本等效项.(1)string p1="xiaomeng";string p2="xiaobei";Response.Write(String.Format("Hello {0},I'm {1}",p1,p1));(2)Response.Write(String.Format("Hello {0},I'm {1}","xi

避免string.Format方法的装箱

我们知道,使用string.Format方法可能会存在装箱的情况.比如如下: static void Main(string[] args) { string s = string.Format("拼接{0}和{1}", 1, 2); Console.WriteLine(s); Console.ReadKey(); } string.Format()方法接收的后两个形参类型是object,所以这里存在装箱. 现在查看IL代码: →打开"开发人员命令提示" →导航到应

JAVA String.format 方法使用介绍

1.对整数进行格式化:%[index$][标识][最小宽度]转换方式        我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解,就是最终该整数转化的字符串最少包含多少位数字.我们来看看剩下2个部分的含义吧: 标识: '-'    在最小宽度内左对齐,不可以与“用0填充”同时使用'#'    只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x'+'    结果总是包括一个符号(一般情况下只适用

Java中利用MessageFormat对象实现类似C# string.Format方法格式化

我们在写C#代码的时候常常会使用到string.Format("待格式化字符串{0},{1},....",参数1,参数2,...),来格式化字符串,特别是拼接字符的时候,这种方式使得代码更为直观清楚. 最近使用java时候却java的string.Format与c#重点string.Format用法不一样,java中的string.format更类似于C语言的sprintf()方法 例如: String str=null; str=String.format("Hello,%

php示例代码之类似于C#中的String.Format方法

php示例代码之类似于C#中的String.Format方法 原文来自于  http://stackoverflow.com/questions/1241177/c-string-format-equivalent-in-php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php function format() {       $args = func_get_args();       if (count($args) == 0

java基础----&gt;String和MessageFormat的format方法

这里介绍一下String和MessageFormat中的format方法的差异以及实现原理. String与MessageFormat的说明 一.两者的使用场景 String.format:for layout justification and alignment, common formats for numeric, string, and date/time data, and locale-specific output. MessageFormat.format:to produce