把每天當(dāng)成最后一天來釋放自己

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            2 隨筆 :: 4 文章 :: 1 評論 :: 0 Trackbacks

              有時會想把數(shù)字,日期,字符串按照給定規(guī)則給格式化。SUN JDK 為我們提供了這個API,它是java.util.Formatter此類提供了對布局對齊和排列的支持,以及

           

          對數(shù)值、字符串和日期/時間數(shù)據(jù)的常規(guī)格式和特定于語言環(huán)境的輸出的支持。

           

          如何格式化?

          給定規(guī)則:

            要想按照自己的想法格式化必須事先編寫一個規(guī)則。那這個規(guī)則要怎么編寫?

          1.常規(guī)類型、字符類型和數(shù)值類型的格式說明符的語法如下:

             %[argument_index$][flags][width][.precision]conversion

          2.用來表示日期和時間類型的格式說明符的語法如下:

             %[argument_index$][flags][width]conversion

          3.與參數(shù)不對應(yīng)的格式說明符的語法如下:

            %[flags][width]conversion

          API中有這樣三種規(guī)則,很顯然第一個規(guī)則的內(nèi)容是最全面的。其它規(guī)則的內(nèi)容和第一規(guī)則的內(nèi)容有重復(fù),那單說第一規(guī)則內(nèi)容,其它規(guī)則依次類推。

          注意:規(guī)則一中的precision前面要加英文句號“.

           

          API有以下解釋:

          可選的 argument_index 是一個十進制整數(shù),用于表明參數(shù)在參數(shù)列表中的位置。第一個參數(shù)由 "1$" 引用,第二個參數(shù)由 "2$" 引用,依此類推。

          可選 flags 是修改輸出格式的字符集。有效標志集取決于轉(zhuǎn)換類型。

          可選 width 是一個非負十進制整數(shù),表明要向輸出中寫入的最少字符數(shù)。

          可選 precision 是一個非負十進制整數(shù),通常用來限制字符數(shù)。特定行為取決于轉(zhuǎn)換類型。

          所需 conversion 是一個表明應(yīng)該如何格式化參數(shù)的字符。給定參數(shù)的有效轉(zhuǎn)換集取決于參數(shù)的數(shù)據(jù)類型。

           

          argument_index很好理解,就是一參數(shù)占位符,用來表示要被格式化的參數(shù)。

           

          flags 

          標志

          常規(guī)

          字符

          整數(shù)

          浮點

          日期/時間

          說明

          '-'

          y

          y

          y

          y

          y

          結(jié)果將是左對齊的。

          '#'

          y1

          -

          y3

          y

          -

          結(jié)果應(yīng)該使用依賴于轉(zhuǎn)換類型的替換形式

          '+'

          -

          -

          y4

          y

          -

          結(jié)果總是包括一個符號

          ' '

          -

          -

          y4

          y

          -

          對于正值,結(jié)果中將包括一個前導(dǎo)空格

          '0'

          -

          -

          y

          y

          -

          結(jié)果將用零來填充

          ','

          -

          -

          y2

          y5

          -

          結(jié)果將包括特定于語言環(huán)境的組分隔符

          '('

          -

          -

          y4

          y5

          -

          結(jié)果將是用圓括號括起來的負數(shù)

          1 取決于 Formattable 的定義。

          2 只適用于 'd' 轉(zhuǎn)換。

          3 只適用于 'o''x' 'X' 轉(zhuǎn)換。

          4BigInteger 應(yīng)用 'd''o''x' 'X' 轉(zhuǎn)換時,或者對 byte Byte、short Short、int Integer、long Long 分別應(yīng)用 'd' 轉(zhuǎn)換時適用。

          5 只適用于 'e''E''f''g' 'G' 轉(zhuǎn)換。

          任何未顯式定義為標志的字符都是非法字符,并且都被保留,以供擴展使用。



          width 就表示一最少字符數(shù),被格式化參數(shù)用precision 截取器截取后與width 相比,被格式化參數(shù)字符數(shù)如果小于width ,則加字符則到等于width 。如果大于則width 不起作用。所以可以叫width 為少加多過器。

           

          precision 在上面也提到了,precision 是一個截取器,用于截取被格式化參數(shù)。

           

          conversion 轉(zhuǎn)換可分為以下幾類:

           常規(guī)- 可應(yīng)用于任何參數(shù)類型

           字符- 可應(yīng)用于表示 Unicode 字符的基本類型:charCharacter、byteByte、short Short。當(dāng) Character.isValidCodePoint(int) 返回 true 時,可將此轉(zhuǎn)換應(yīng)用于 int Integer 類型

          數(shù)值

          1 整數(shù)- 可應(yīng)用于 Java 的整數(shù)類型:byteByte、shortShort、intInteger、longLongBigInteger

          2 浮點- 可用于 Java 的浮點類型:floatFloat、doubleDoubleBigDecimal

           日期/時間- 可應(yīng)用于 Java 的、能夠?qū)θ掌诨驎r間進行編碼的類型:longLongCalendarDate

           百分比- 產(chǎn)生字面值 '%' ('\u0025')

           行分隔符- 產(chǎn)生特定于平臺的行分隔符

           

          常規(guī)

          B b

          如果參數(shù) argnull,則結(jié)果為 "false"。如果 arg 是一個 boolean 值或 Boolean,則結(jié)果為 String.valueOf() 返回的字符串。否則結(jié)果為 "true"

          H h

          如果參數(shù) argnull,則結(jié)果為 "null"。否則,結(jié)果為調(diào)用 Integer.toHexString(arg.hashCode()) 得到的結(jié)果。

          S s

          如果參數(shù) argnull,則結(jié)果為 "null"。如果 arg 實現(xiàn) Formattable,則調(diào)用 arg.formatTo。否則,結(jié)果為調(diào)用 arg.toString() 得到的結(jié)果。

          字符

          C c

          結(jié)果是一個 Unicode 字符

          整數(shù)

          d

          結(jié)果被格式化為十進制整數(shù)

          o

          結(jié)果被格式化為八進制整數(shù)

          X x

          結(jié)果被格式化為十六進制整數(shù)

          浮點

          E e

          結(jié)果被格式化為用計算機科學(xué)記數(shù)法表示的十進制數(shù)

          f

          結(jié)果被格式化為十進制數(shù)

          G g

          根據(jù)精度和舍入運算后的值,使用計算機科學(xué)記數(shù)形式或十進制格式對結(jié)果進行格式化。

          A a

          結(jié)果被格式化為帶有效位數(shù)和指數(shù)的十六進制浮點數(shù)

          日期,日間

          T t

          日期和時間轉(zhuǎn)換字符的前綴

          百分比

          %

          結(jié)果為字面值 '%'

          行分隔符

          n

          結(jié)果為特定于平臺的行分隔符

           

          常出現(xiàn)的異常

           

          java.util.IllegalFormatConversionException: d != java.lang.Double : 被格式化參數(shù)類型與規(guī)則轉(zhuǎn)換類型不對應(yīng)。

           

          java.util.FormatFlagsConversionMismatchException: Conversion = d, Flags = #  flag不適用于規(guī)則轉(zhuǎn)換類型。

           

          Formatter類是用正則表達式驗證給定規(guī)則的

           

          正則表達式如下:

           private static final String formatSpecifier

          =

            "%(\\d+\\$)?([-#+0,(\\<]*)?(\\d+)?(\\.\\d+)?([tT])?([a-zA-Z%])";

           

           

             總結(jié):

          •    最重要的是它可以格式化日期/時間,數(shù)值和字符。
          •    可以把日期轉(zhuǎn)換成年,月,日,星期等。可以為數(shù)值填充空格或0,添加分組字符,正負號,及小括號。我們可以在System.out.format    (),String.format()方法中直接應(yīng)用Formatter類。
          posted on 2011-03-15 16:23 風(fēng)的方向 閱讀(8808) 評論(1)  編輯  收藏

          評論

          # re: Java 格式化類(java.util.Formatter)基本用法 2016-03-14 17:06 o
          kkk  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 盘山县| 南陵县| 双牌县| 嵊州市| 乳山市| 历史| 京山县| 集安市| 慈利县| 汶上县| 石阡县| 宜兰县| 汕尾市| 云安县| 鹰潭市| 富源县| 梨树县| 泗洪县| 祁门县| 河间市| 荃湾区| 建阳市| 静海县| 贡觉县| 红原县| 临沂市| 庐江县| 巴青县| 老河口市| 宜兴市| 德令哈市| 南丹县| 晋江市| 安宁市| 偃师市| 贡觉县| 拉孜县| 文水县| 靖安县| 宜州市| 庆城县|