30 second

          java字符串格式化

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

          函數原型:

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


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


           

          一、第一個參數是格式化字符串,其語法:

          1、常規類型、字符類型和數值類型的格式說明符的語法如下:
             %[argument_index$][flags][width][.precision]conversion
          

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

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

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

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

          *所需 conversion 是一個表明應該如何格式化參數的字符。給定參數的有效轉換集取決于參數的數據類型。

          2、用來表示日期和時間類型

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

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

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

          3、與參數不對應的格式說明符的語法如下:

             %[flags][width]conversion
          


           可選 flags 和 width 的定義同上。

          所需的 conversion 是一個表明要在輸出中所插內容的字符。


          二、語法中個元素對應的參數
          1、標志(flags)

          下表總結了受支持的標志。y 表示該標志受指示參數類型支持。
          標志 常規 字符 整數 浮點 日期/時間 說明
          '-' y y y y y 結果將是左對齊的。
          '#' y1 - y3 y - 結果應該使用依賴于轉換類型的替換形式
          '+' - - y4 y - 結果總是包括一個符號
          '  ' - - y4 y - 對于正值,結果中將包括一個前導空格
          '0' - - y y - 結果將用零來填充
          ',' - - y2 y5 - 結果將包括特定于語言環境的組分隔符
          '(' - - y4 y5 - 結果將是用圓括號括起來的負數

          1 取決于 Formattable 的定義。

          2 只適用于 'd' 轉換。

          3 只適用于 'o''x''X' 轉換。

          4BigInteger 應用 'd''o''x''X' 轉換時,或者對 byteByteshortShortintIntegerlongLong 分別應用 'd' 轉換時適用。

          5 只適用于 'e''E''f''g''G' 轉換。

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


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

          2、寬度(width)

          寬度是將向輸出中寫入的最少字符數。對于行分隔符轉換,不適用寬度,如果提供寬度,則會拋出異常。

          3、精度(precision)

          對于常規參數類型,精度是將向輸出中寫入的最多字符數。

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

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



          4、轉換(conversion)

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

              out.toUpperCase() 

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

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

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 平湖市| 兴隆县| 潞城市| 额尔古纳市| 铜川市| 泰州市| 泾源县| 尉氏县| 大渡口区| 手机| 福州市| 寻乌县| 安远县| 台山市| 北流市| 东源县| 贵港市| 合肥市| 鄂尔多斯市| 全南县| 家居| 临夏县| 荣昌县| 鞍山市| 平遥县| 祁阳县| 繁昌县| 沐川县| 阳曲县| 廉江市| 保定市| 威海市| 格尔木市| 休宁县| 黄冈市| 怀仁县| 交城县| 灌云县| 崇仁县| 霍邱县| 华安县|