﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-30 second</title><link>http://www.blogjava.net/riacya/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 03:20:14 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 03:20:14 GMT</pubDate><ttl>60</ttl><item><title>java字符串格式化</title><link>http://www.blogjava.net/riacya/archive/2010/08/19/329377.html</link><dc:creator>xyan</dc:creator><author>xyan</author><pubDate>Thu, 19 Aug 2010 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/riacya/archive/2010/08/19/329377.html</guid><wfw:comment>http://www.blogjava.net/riacya/comments/329377.html</wfw:comment><comments>http://www.blogjava.net/riacya/archive/2010/08/19/329377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/riacya/comments/commentRss/329377.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/riacya/services/trackbacks/329377.html</trackback:ping><description><![CDATA[<p>寻找将数字转化为定长字符串的方法，最终发现用String类的Format可以实现<br />
示例：<br />
int id = 0;<br />
String id2 = String .format("%010d", id);&nbsp; //前导置零，10位长度的字符串<br />
<br />
函数原型：<tt></p>
<p><strong>format</strong><br />
public static String format(String format,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object... args)<br />
使用指定的格式字符串和参数返回一个格式化字符串。 <br />
始终使用 Locale.getDefault() 返回的语言环境。 </p>
<p><br />
<strong>参数：</strong> <br />
format - 格式字符串 <br />
args - 格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数，则忽略这些额外的参数。参数的数目是可变的，可以为 0。参数的最大数目受 Java Virtual Machine Specification 所定义的 Java 数组最大维度的限制。有关 null 参数的行为依赖于转换。 <br />
<strong>返回：</strong> <br />
一个格式化字符串 <br />
<strong>抛出：</strong> <br />
IllegalFormatException - 如果格式字符串中包含非法语法、与给定的参数不兼容的格式说明符，格式字符串给定的参数不够，或者存在其他非法条件。有关所有可能的格式化错误的规范，请参阅 formatter 类规范的详细信息 一节。 <br />
NullPointerException - 如果 format 为 null</p>
<p><br />
</tt>&nbsp;</p>
一、第一个参数是格式化字符串，其语法：<br />
<br />
1、常规类型、字符类型和数值类型的格式说明符的语法如下：
<blockquote>
<pre>   %[argument_index$][flags][width][.precision]conversion
</pre>
</blockquote><br />
<p>*可选的 argument_index 是一个十进制整数，用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用，第二个参数由 "2$" 引用，依此类推。 </p>
<p>*可选 flags 是修改输出格式的字符集。有效标志集取决于转换类型。 </p>
<p>*可选 width 是一个非负十进制整数，表明要向输出中写入的最少字符数。 </p>
<p>*可选 precision 是一个非负十进制整数，通常用来限制字符数。特定行为取决于转换类型。 </p>
<p>*所需 conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集取决于参数的数据类型。 </p>
<p>2、用来表示日期和时间类型 </p>
<blockquote>
<pre>   %[argument_index$][flags][width]conversion </pre>
</blockquote>
<p>&nbsp;<br />
&nbsp;*可选的 argument_index、flags 和 width 的定义同上。 </p>
<p>*所需的 conversion 是一个由两字符组成的序列。第一个字符是 't' 或 'T'。第二个字符表明所使用的格式。这些字符类似于但不完全等同于那些由 GNU date 和 POSIX strftime(3c) 定义的字符。 </p>
<p>3、与参数不对应的格式说明符的语法如下： </p>
<blockquote>
<pre>   %[flags][width]conversion
</pre>
</blockquote>
<p><br />
&nbsp;可选 flags 和 width 的定义同上。 </p>
<p>所需的 conversion 是一个表明要在输出中所插内容的字符。</p>
<br />
二、语法中个元素对应的参数<br />
1、标志（flags)<br />
<p>下表总结了受支持的标志。<em>y</em> 表示该标志受指示参数类型支持。
<table summary="genConv" cellpadding="5">
    <tbody>
        <tr>
            <th valign="bottom">标志
            <th valign="bottom">常规
            <th valign="bottom">字符
            <th valign="bottom">整数
            <th valign="bottom">浮点
            <th valign="bottom">日期/时间
            <th valign="bottom">说明
            <tr>
                <td>'-'
                <td valign="top" align="center">y
                <td valign="top" align="center">y
                <td valign="top" align="center">y
                <td valign="top" align="center">y
                <td valign="top" align="center">y
                <td>结果将是左对齐的。
                <tr>
                    <td>'#'
                    <td valign="top" align="center">y<sup>1</sup>
                    <td valign="top" align="center">-
                    <td valign="top" align="center">y<sup>3</sup>
                    <td valign="top" align="center">y
                    <td valign="top" align="center">-
                    <td>结果应该使用依赖于转换类型的替换形式
                    <tr>
                        <td>'+'
                        <td valign="top" align="center">-
                        <td valign="top" align="center">-
                        <td valign="top" align="center">y<sup>4</sup>
                        <td valign="top" align="center">y
                        <td valign="top" align="center">-
                        <td>结果总是包括一个符号
                        <tr>
                            <td>'&nbsp;&nbsp;'
                            <td valign="top" align="center">-
                            <td valign="top" align="center">-
                            <td valign="top" align="center">y<sup>4</sup>
                            <td valign="top" align="center">y
                            <td valign="top" align="center">-
                            <td>对于正值，结果中将包括一个前导空格
                            <tr>
                                <td>'0'
                                <td valign="top" align="center">-
                                <td valign="top" align="center">-
                                <td valign="top" align="center">y
                                <td valign="top" align="center">y
                                <td valign="top" align="center">-
                                <td>结果将用零来填充
                                <tr>
                                    <td>','
                                    <td valign="top" align="center">-
                                    <td valign="top" align="center">-
                                    <td valign="top" align="center">y<sup>2</sup>
                                    <td valign="top" align="center">y<sup>5</sup>
                                    <td valign="top" align="center">-
                                    <td>结果将包括特定于语言环境的<a href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/text/DecimalFormatSymbols.html#getGroupingSeparator()">组分隔符</a>
                                    <tr>
                                        <td>'('
                                        <td valign="top" align="center">-
                                        <td valign="top" align="center">-
                                        <td valign="top" align="center">y<sup>4</sup>
                                        <td valign="top" align="center">y<sup>5</sup>
                                        <td align="center">-
                                        <td>结果将是用圆括号括起来的负数 </td>
                                    </tr>
                                </tbody>
                            </table>
                            <p><sup>1</sup> 取决于 <a title="java.util 中的接口" href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/util/Formattable.html"><code>Formattable</code></a> 的定义。
                            <p><sup>2</sup> 只适用于 <tt>'d'</tt> 转换。
                            <p><sup>3</sup> 只适用于 <tt>'o'</tt>、<tt>'x'</tt> 和 <tt>'X'</tt> 转换。
                            <p><sup>4</sup> 对 <a title="java.math 中的类" href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/math/BigInteger.html"><code>BigInteger</code></a> 应用 <tt>'d'</tt>、<tt>'o'</tt>、<tt>'x'</tt> 和 <tt>'X'</tt> 转换时，或者对 <tt>byte</tt> 及 <a title="java.lang 中的类" href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/lang/Byte.html"><code>Byte</code></a>、<tt>short</tt> 及 <a title="java.lang 中的类" href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/lang/Short.html"><code>Short</code></a>、<tt>int</tt> 及 <a title="java.lang 中的类" href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/lang/Integer.html"><code>Integer</code></a>、<tt>long</tt> 及 <a title="java.lang 中的类" href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/lang/Long.html"><code>Long</code></a> 分别应用 <tt>'d'</tt> 转换时适用。
                            <p><sup>5</sup> 只适用于 <tt>'e'</tt>、<tt>'E'</tt>、<tt>'f'</tt>、<tt>'g'</tt> 和 <tt>'G'</tt> 转换。
                            <p>任何未显式定义为标志的字符都是非法字符，并且都被保留，以供扩展使用。 </p>
                            <br />
                            **String id2 = String .format("%010d", id); 其中引号内第一个0便是用零填充，<br />
                            <br />
                            2、宽度（width）
                            <p>宽度是将向输出中写入的最少字符数。对于行分隔符转换，不适用宽度，如果提供宽度，则会抛出异常。<br />
                            <br />
                            3、精度（precision）<br />
                            </p>
                            <p>对于常规参数类型，精度是将向输出中写入的最多字符数。
                            <p>对于浮点转换 <tt>'e'</tt>、<tt>'E'</tt> 和 <tt>'f'</tt>，精度是小数点分隔符后的位数。如果转换是 <tt>'g'</tt> 或 <tt>'G'</tt>，那么精度是舍入计算后所得数值的所有位数。如果转换是 <tt>'a'</tt> 或 <tt>'A'</tt>，则不必指定精度。
                            <p>对于字符、整数和日期/时间参数类型转换，以及百分比和行分隔符转换，精度是不适用的；如果提供精度，则会抛出异常。</p>
                            <p><br />
                            <br />
                            4、转换（conversion）<br />
                            </p>
                            <p>下表总结了受支持的转换。由大写字符（如 <tt>'B'</tt>、<tt>'H'</tt>、<tt>'S'</tt>、<tt>'C'</tt>、<tt>'X'</tt>、<tt>'E'</tt>、<tt>'G'</tt>、<tt>'A'</tt> 和 <tt>'T'</tt>）表示的转换与由相应的小写字符的转换等同，根据流行的 <a title="java.util 中的类" href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/util/Locale.html"><code>Locale</code></a> 规则将结果转换为大写形式除外。后者等同于 <a href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/lang/String.html#toUpperCase()"><code>String.toUpperCase()</code></a> 的以下调用
                            <pre>    out.toUpperCase() </pre>
                            <p>
                            <table summary="genConv" cellpadding="5">
                                <tbody>
                                    <tr>
                                        <th valign="bottom">转换
                                        <th valign="bottom">参数类别
                                        <th valign="bottom">说明
                                        <tr>
                                            <td valign="top"><tt>'b'</tt>, <tt>'B'</tt>
                                            <td valign="top">常规
                                            <td>如果参数 <em>arg</em> 为 <tt>null</tt>，则结果为 "<tt>false</tt>"。如果 <em>arg</em> 是一个 <tt>boolean</tt> 值或 <a title="java.lang 中的类" href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/lang/Boolean.html"><code>Boolean</code></a>，则结果为 <a href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/lang/String.html#valueOf(boolean)"><code>String.valueOf()</code></a> 返回的字符串。否则结果为 "true"。
                                            <tr>
                                                <td valign="top"><tt>'h'</tt>, <tt>'H'</tt>
                                                <td valign="top">常规
                                                <td>如果参数 <em>arg</em> 为 <tt>null</tt>，则结果为 "<tt>null</tt>"。否则，结果为调用 <tt>Integer.toHexString(arg.hashCode())</tt> 得到的结果。
                                                <tr>
                                                    <td valign="top"><tt>'s'</tt>, <tt>'S'</tt>
                                                    <td valign="top">常规
                                                    <td>如果参数 <em>arg</em> 为 <tt>null</tt>，则结果为 "<tt>null</tt>"。如果 <em>arg</em> 实现 <a title="java.util 中的接口" href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/util/Formattable.html"><code>Formattable</code></a>，则调用 <a href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/util/Formattable.html#formatTo(java.util.Formatter, int, int, int)"><code>arg.formatTo</code></a>。否则，结果为调用 <tt>arg.toString()</tt> 得到的结果。
                                                    <tr>
                                                        <td valign="top"><tt>'c'</tt>, <tt>'C'</tt>
                                                        <td valign="top">字符
                                                        <td>结果是一个 Unicode 字符
                                                        <tr>
                                                            <td valign="top"><tt>'d'</tt>
                                                            <td valign="top">整数
                                                            <td>结果被格式化为十进制整数
                                                            <tr>
                                                                <td valign="top"><tt>'o'</tt>
                                                                <td valign="top">整数
                                                                <td>结果被格式化为八进制整数
                                                                <tr>
                                                                    <td valign="top"><tt>'x'</tt>, <tt>'X'</tt>
                                                                    <td valign="top">整数
                                                                    <td>结果被格式化为十六进制整数
                                                                    <tr>
                                                                        <td valign="top"><tt>'e'</tt>, <tt>'E'</tt>
                                                                        <td valign="top">浮点
                                                                        <td>结果被格式化为用计算机科学记数法表示的十进制数
                                                                        <tr>
                                                                            <td valign="top"><tt>'f'</tt>
                                                                            <td valign="top">浮点
                                                                            <td>结果被格式化为十进制数
                                                                            <tr>
                                                                                <td valign="top"><tt>'g'</tt>, <tt>'G'</tt>
                                                                                <td valign="top">浮点
                                                                                <td>根据精度和舍入运算后的值，使用计算机科学记数形式或十进制格式对结果进行格式化。
                                                                                <tr>
                                                                                    <td valign="top"><tt>'a'</tt>, <tt>'A'</tt>
                                                                                    <td valign="top">浮点
                                                                                    <td>结果被格式化为带有效位数和指数的十六进制浮点数
                                                                                    <tr>
                                                                                        <td valign="top"><tt>'t'</tt>, <tt>'T'</tt>
                                                                                        <td valign="top">日期/时间
                                                                                        <td>日期和时间转换字符的前缀。请参阅<a href="mk:@MSITStore:D:\1项目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/util/Formatter.html#dt">日期/时间转换</a>。
                                                                                        <tr>
                                                                                            <td valign="top"><tt>'%'</tt>
                                                                                            <td valign="top">百分比
                                                                                            <td>结果为字面值 <tt>'%'</tt> (<tt>'\u0025'</tt>)
                                                                                            <tr>
                                                                                                <td valign="top"><tt>'n'</tt>
                                                                                                <td valign="top">行分隔符
                                                                                                <td>结果为特定于平台的行分隔符 </td>
                                                                                            </tr>
                                                                                        </tbody>
                                                                                    </table>
                                                                                    </p>
                                                                                    <p>任何未明确定义为转换的字符都是非法字符，并且都被保留，以供将来扩展使用<br />
                                                                                    <br />
                                                                                    此外还有日期格式的转换，在此不列出。<br />
                                                                                    （以上来源于JDK1.6）</p>
<img src ="http://www.blogjava.net/riacya/aggbug/329377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/riacya/" target="_blank">xyan</a> 2010-08-19 16:35 <a href="http://www.blogjava.net/riacya/archive/2010/08/19/329377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>