30 second

          java字符串格式化

          尋找將數(shù)字轉(zhuǎn)化為定長(zhǎng)字符串的方法,最終發(fā)現(xiàn)用String類的Format可以實(shí)現(xiàn)
          示例:
          int id = 0;
          String id2 = String .format("%010d", id);  //前導(dǎo)置零,10位長(zhǎng)度的字符串

          函數(shù)原型:

          format
          public static String format(String format,
                                      Object... args)
          使用指定的格式字符串和參數(shù)返回一個(gè)格式化字符串。
          始終使用 Locale.getDefault() 返回的語(yǔ)言環(huán)境。


          參數(shù):
          format - 格式字符串
          args - 格式字符串中由格式說明符引用的參數(shù)。如果還有格式說明符以外的參數(shù),則忽略這些額外的參數(shù)。參數(shù)的數(shù)目是可變的,可以為 0。參數(shù)的最大數(shù)目受 Java Virtual Machine Specification 所定義的 Java 數(shù)組最大維度的限制。有關(guān) null 參數(shù)的行為依賴于轉(zhuǎn)換。
          返回:
          一個(gè)格式化字符串
          拋出:
          IllegalFormatException - 如果格式字符串中包含非法語(yǔ)法、與給定的參數(shù)不兼容的格式說明符,格式字符串給定的參數(shù)不夠,或者存在其他非法條件。有關(guān)所有可能的格式化錯(cuò)誤的規(guī)范,請(qǐng)參閱 formatter 類規(guī)范的詳細(xì)信息 一節(jié)。
          NullPointerException - 如果 format 為 null


           

          一、第一個(gè)參數(shù)是格式化字符串,其語(yǔ)法:

          1、常規(guī)類型、字符類型和數(shù)值類型的格式說明符的語(yǔ)法如下:
             %[argument_index$][flags][width][.precision]conversion
          

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

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

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

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

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

          2、用來表示日期和時(shí)間類型

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

           
           *可選的 argument_index、flags 和 width 的定義同上。

          *所需的 conversion 是一個(gè)由兩字符組成的序列。第一個(gè)字符是 't' 或 'T'。第二個(gè)字符表明所使用的格式。這些字符類似于但不完全等同于那些由 GNU date 和 POSIX strftime(3c) 定義的字符。

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

             %[flags][width]conversion
          


           可選 flags 和 width 的定義同上。

          所需的 conversion 是一個(gè)表明要在輸出中所插內(nèi)容的字符。


          二、語(yǔ)法中個(gè)元素對(duì)應(yīng)的參數(shù)
          1、標(biāo)志(flags)

          下表總結(jié)了受支持的標(biāo)志。y 表示該標(biāo)志受指示參數(shù)類型支持。
          標(biāo)志 常規(guī) 字符 整數(shù) 浮點(diǎn) 日期/時(shí)間 說明
          '-' y y y y y 結(jié)果將是左對(duì)齊的。
          '#' y1 - y3 y - 結(jié)果應(yīng)該使用依賴于轉(zhuǎn)換類型的替換形式
          '+' - - y4 y - 結(jié)果總是包括一個(gè)符號(hào)
          '  ' - - y4 y - 對(duì)于正值,結(jié)果中將包括一個(gè)前導(dǎo)空格
          '0' - - y y - 結(jié)果將用零來填充
          ',' - - y2 y5 - 結(jié)果將包括特定于語(yǔ)言環(huán)境的組分隔符
          '(' - - y4 y5 - 結(jié)果將是用圓括號(hào)括起來的負(fù)數(shù)

          1 取決于 Formattable 的定義。

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

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

          4 對(duì) BigInteger 應(yīng)用 'd''o''x''X' 轉(zhuǎn)換時(shí),或者對(duì) byteByteshortShortintIntegerlongLong 分別應(yīng)用 'd' 轉(zhuǎn)換時(shí)適用。

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

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


          **String id2 = String .format("%010d", id); 其中引號(hào)內(nèi)第一個(gè)0便是用零填充,

          2、寬度(width)

          寬度是將向輸出中寫入的最少字符數(shù)。對(duì)于行分隔符轉(zhuǎn)換,不適用寬度,如果提供寬度,則會(huì)拋出異常。

          3、精度(precision)

          對(duì)于常規(guī)參數(shù)類型,精度是將向輸出中寫入的最多字符數(shù)。

          對(duì)于浮點(diǎn)轉(zhuǎn)換 'e''E''f',精度是小數(shù)點(diǎn)分隔符后的位數(shù)。如果轉(zhuǎn)換是 'g''G',那么精度是舍入計(jì)算后所得數(shù)值的所有位數(shù)。如果轉(zhuǎn)換是 'a''A',則不必指定精度。

          對(duì)于字符、整數(shù)和日期/時(shí)間參數(shù)類型轉(zhuǎn)換,以及百分比和行分隔符轉(zhuǎn)換,精度是不適用的;如果提供精度,則會(huì)拋出異常。



          4、轉(zhuǎn)換(conversion)

          下表總結(jié)了受支持的轉(zhuǎn)換。由大寫字符(如 'B''H''S''C''X''E''G''A''T')表示的轉(zhuǎn)換與由相應(yīng)的小寫字符的轉(zhuǎn)換等同,根據(jù)流行的 Locale 規(guī)則將結(jié)果轉(zhuǎn)換為大寫形式除外。后者等同于 String.toUpperCase() 的以下調(diào)用

              out.toUpperCase() 

          轉(zhuǎn)換 參數(shù)類別 說明
          'b', 'B' 常規(guī) 如果參數(shù) argnull,則結(jié)果為 "false"。如果 arg 是一個(gè) boolean 值或 Boolean,則結(jié)果為 String.valueOf() 返回的字符串。否則結(jié)果為 "true"。
          'h', 'H' 常規(guī) 如果參數(shù) argnull,則結(jié)果為 "null"。否則,結(jié)果為調(diào)用 Integer.toHexString(arg.hashCode()) 得到的結(jié)果。
          's', 'S' 常規(guī) 如果參數(shù) argnull,則結(jié)果為 "null"。如果 arg 實(shí)現(xiàn) Formattable,則調(diào)用 arg.formatTo。否則,結(jié)果為調(diào)用 arg.toString() 得到的結(jié)果。
          'c', 'C' 字符 結(jié)果是一個(gè) Unicode 字符
          'd' 整數(shù) 結(jié)果被格式化為十進(jìn)制整數(shù)
          'o' 整數(shù) 結(jié)果被格式化為八進(jìn)制整數(shù)
          'x', 'X' 整數(shù) 結(jié)果被格式化為十六進(jìn)制整數(shù)
          'e', 'E' 浮點(diǎn) 結(jié)果被格式化為用計(jì)算機(jī)科學(xué)記數(shù)法表示的十進(jìn)制數(shù)
          'f' 浮點(diǎn) 結(jié)果被格式化為十進(jìn)制數(shù)
          'g', 'G' 浮點(diǎn) 根據(jù)精度和舍入運(yùn)算后的值,使用計(jì)算機(jī)科學(xué)記數(shù)形式或十進(jìn)制格式對(duì)結(jié)果進(jìn)行格式化。
          'a', 'A' 浮點(diǎn) 結(jié)果被格式化為帶有效位數(shù)和指數(shù)的十六進(jìn)制浮點(diǎn)數(shù)
          't', 'T' 日期/時(shí)間 日期和時(shí)間轉(zhuǎn)換字符的前綴。請(qǐng)參閱日期/時(shí)間轉(zhuǎn)換
          '%' 百分比 結(jié)果為字面值 '%' ('\u0025')
          'n' 行分隔符 結(jié)果為特定于平臺(tái)的行分隔符

          任何未明確定義為轉(zhuǎn)換的字符都是非法字符,并且都被保留,以供將來擴(kuò)展使用

          此外還有日期格式的轉(zhuǎn)換,在此不列出。
          (以上來源于JDK1.6)

          posted on 2010-08-19 16:35 xyan 閱讀(5694) 評(píng)論(0)  編輯  收藏


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 来宾市| 曲阳县| 牡丹江市| 讷河市| 罗城| 普格县| 莱芜市| 桐乡市| 巴林左旗| 南皮县| 康平县| 封开县| 宜川县| 东丰县| 临邑县| 合川市| 米泉市| 房山区| 南昌县| 南通市| 乡宁县| 托克逊县| 淳化县| 张掖市| 宜川县| 涟水县| 屯留县| 汉源县| 万年县| 同仁县| 海盐县| 马尔康县| 奈曼旗| 浪卡子县| 绥滨县| 葫芦岛市| 长葛市| 综艺| 和林格尔县| 怀安县| 南皮县|