欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析Java格式字符串的使用

 更新時(shí)間:2022年02月02日 08:36:56   作者:蘇西月  
本文通過實(shí)例給大家介紹了java格式字符串的使用,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

Class Formatter

該類提供了對布局調(diào)整和對齊的支持,對數(shù)字、字符串和日期/時(shí)間數(shù)據(jù)的常用格式,以及本地特定的輸出。支持常見的Java類型,如byte、BigDecimal和Calendar。通過Formattable接口為任意的用戶類型提供有限的格式化定制。
格式化器對于多線程訪問不一定安全。線程安全是可選的。

舉例說明:

StringBuilder sb = new StringBuilder();
   // Send all output to the Appendable object sb
   Formatter formatter = new Formatter(sb, Locale.US);
   // 顯示參數(shù)索引可用于重新排序輸出。
   formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
   // -> " d  c  b  a"
   // 可選作為第一個(gè)參數(shù)的語言環(huán)境可用于獲取特定于語言環(huán)境的數(shù)字格式??梢越o出精度和寬度,以便對數(shù)值進(jìn)行舍入與對齊。
   formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E);
   // -> "e =    +2,7183"
   // '(' 數(shù)字標(biāo)志可用于用小括號而不是減號來格式化負(fù)數(shù)。 組別分隔符會自動插入。
   formatter.format("Amount gained or lost since last statement: $ %(,.2f",
                    balanceDelta);
   // -> "Amount gained or lost since last statement: $ (6,217.58)"

如以下調(diào)用所示,存在用于常見格式化請求的便捷方法:

 // 寫一個(gè)格式化的字符串到 System.out.
   System.out.format("Local time: %tT", Calendar.getInstance());
   // -> "Local time: 13:34:18"

   // 將格式化的輸出寫到 System.err.
   System.err.printf("Unable to open file '%1$s': %2$s",
                     fileName, exception.getMessage());
   // -> "Unable to open file 'food': No such file or directory"

像 C語言的sprintf(3),字符串可以使用靜態(tài)方法格式化String.format

 // 格式化一個(gè)包含日期的字符串
   import java.util.Calendar;
   import java.util.GregorianCalendar;
   import static java.util.Calendar.*;

   Calendar c = new GregorianCalendar(1995, MAY, 23);
   String s = String.format("Duke's Birthday: %1$tb %1$te, %1$tY", c);
   // -> s == "Duke's Birthday: May 23, 1995"

*每個(gè)產(chǎn)生格式化輸出的方法都需要一個(gè)格式字符串和一個(gè)參數(shù)列表。

格式字符串是一個(gè)String可能包含固定文本和一個(gè)或多個(gè)嵌入格式說明符的字符串。

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Formatter.html#syntax

Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);

此格式字符串是該format方法的第一個(gè)參數(shù)。它包含三個(gè)格式說明符“%1$tm”、“%1$te”和“%1$tY”,它們指示應(yīng)如何處理參數(shù)以及應(yīng)在文本中插入的位置。格式字符串的其余部分是固定文本"Dukes Birthday: ",包括任何其他空格或標(biāo)點(diǎn)符號。參數(shù)列表包含在格式字符串之后傳遞給方法的所有參數(shù)。

通用、字符和數(shù)字類型的格式說明符具有以下語法:

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

可選的argument_index是一個(gè)十進(jìn)制的整數(shù),表示參數(shù)在參數(shù)列表中的位置。第一個(gè)參數(shù)用 "1$"引用,第二個(gè)用 "2$"引用,等等。

可選的flags是一組用于修改輸出格式的字符。有效標(biāo)志的集合取決于轉(zhuǎn)換的情況。

可選的width是一個(gè)正的十進(jìn)制整數(shù),表示要寫入輸出的最小字符數(shù)。

可選的precision是一個(gè)非負(fù)的十進(jìn)制整數(shù),通常用于限制字符的數(shù)量。具體行為取決于轉(zhuǎn)換的情況。

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

  • 用于表示日期和時(shí)間的類型的格式說明符具有以下語法:

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

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

所需的conversion是兩個(gè)字符序列。第一個(gè)字符是't''T'。第二個(gè)字符表示要使用的格式。這些字符與 GNUdate和 POSIXstrftime(3c)定義的字符相似但不完全相同。

與參數(shù)不對應(yīng)的格式說明符具有以下語法:

  • %[flags][width]conversion

可選flags和width定義如上。

所需的conversion是指示要在輸出中插入的內(nèi)容的字符。

conversion

conversion分為以下幾類:

  • 一般- 可應(yīng)用于任何參數(shù)類型
  • 字符- 可應(yīng)用于表示 Unicode 字符的基本類型:char、Character、byte、Byte、shortShort. 這種轉(zhuǎn)換也可以應(yīng)用于類型int和Integer當(dāng)Character.isValidCodePoint(int)返回true時(shí)
  • 數(shù)字

    Integral - 可以應(yīng)用于 Java 整數(shù)類型:byteByteshortShortintand IntegerlongLong, and BigInteger(但不是char或者 Character

    浮點(diǎn)- 可應(yīng)用于 Java 浮點(diǎn)類型: floatFloat、double、DoubleBigDecimal

  • 日期/時(shí)間- 可應(yīng)用于能夠編碼日期或時(shí)間的 Java 類型:long、LongCalendar和 DateTemporalAccessor
  • 百分比- 產(chǎn)生字面的'%' ( '\u0025')
  • 行分隔符 - 生成特定于平臺的行分隔符

對于類別General、Character、Numberic、Integral和Date/Time轉(zhuǎn)換,除非另有說明,否則如果參數(shù)arg為null,則結(jié)果為 "null"。

conversion參數(shù)類別描述
'b','B'一般如果參數(shù)arg是null,那么結(jié)果是 " false"。如果arg是 abooleanBoolean,則結(jié)果是由 . 返回的字符串String.valueOf(arg)。否則,結(jié)果為“真”。
'h','H'一般結(jié)果是通過調(diào)用獲得的 Integer.toHexString(arg.hashCode())。
's','S'一般如果arg實(shí)現(xiàn)Formattable,則 arg.formatTo調(diào)用。否則,通過調(diào)用 獲得結(jié)果arg.toString()。
'c','C'字符結(jié)果是一個(gè) Unicode 字符
'd'整型結(jié)果被格式化為十進(jìn)制整數(shù)
'o'整型結(jié)果被格式化為八進(jìn)制整數(shù)
'x','X'整型結(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)結(jié)果使用計(jì)算機(jī)科學(xué)記數(shù)法或十進(jìn)制格式進(jìn)行格式化,具體取決于精度和舍入后的值。
'a','A'浮點(diǎn)結(jié)果被格式化為帶有有效數(shù)和指數(shù)的十六進(jìn)制浮點(diǎn)數(shù)。盡管后者屬于 浮點(diǎn)參數(shù)類別 ,但該類型不支持此轉(zhuǎn)換。BigDecimal
't','T'日期/時(shí)間日期和時(shí)間轉(zhuǎn)換字符的前綴。請參閱日期/時(shí)間轉(zhuǎn)換。
'%'百分結(jié)果是字面的'%''\u0025')
'n'行分隔符結(jié)果是特定于平臺的行分隔符

日期/時(shí)間轉(zhuǎn)換

以下日期和時(shí)間轉(zhuǎn)換后綴字符是定義給't','T'-這兩個(gè)conversion的。

以下轉(zhuǎn)換字符用于格式化時(shí)間:

'H'24 小時(shí)制的一天中的小時(shí),格式為兩位數(shù),必要時(shí)帶有前導(dǎo)零,即00 - 23.
'I'12 小時(shí)制的小時(shí),格式為兩位數(shù),必要時(shí)帶有前導(dǎo)零,即 01 - 12.
'k'24 小時(shí)制的一天中的小時(shí),即0 - 23.
'l'12 小時(shí)制的小時(shí),即1 - 12.
'M'小時(shí)內(nèi)的分鐘格式為兩位數(shù),必要時(shí)帶有前導(dǎo)零,即 00 - 59.
'S'分鐘內(nèi)的秒數(shù),必要時(shí)格式化為帶有前導(dǎo)零的兩位數(shù)字,即00 - 60(“ 60”是支持閏秒所需的特殊值)。
'L'秒內(nèi)的毫秒格式為三位數(shù)字,必要時(shí)帶有前導(dǎo)零,即000 - 999.
'N'秒內(nèi)的納秒,格式為九位數(shù)字,必要時(shí)帶有前導(dǎo)零,即000000000 - 999999999.
'p'小寫的特定于區(qū)域設(shè)置的上午或下午am標(biāo)記,例如“ ”或“ pm”。使用轉(zhuǎn)換前綴'T'會強(qiáng)制此輸出為大寫。
'z'RFC 822 風(fēng)格的數(shù)字時(shí)區(qū)從 GMT 偏移,例如-0800. 該值將根據(jù)夏令時(shí)的需要進(jìn)行調(diào)整。對于 longLongDate使用的時(shí)區(qū)是此 Java 虛擬機(jī)實(shí)例的默認(rèn)時(shí)區(qū)。
'Z'表示時(shí)區(qū)縮寫的字符串。該值將根據(jù)夏令時(shí)的需要進(jìn)行調(diào)整。對于 long、LongDate使用的時(shí)區(qū)是此 Java 虛擬機(jī)實(shí)例的默認(rèn)時(shí)區(qū)。格式化程序的語言環(huán)境將取代參數(shù)的語言環(huán)境(如果有)。
's'自世界標(biāo)準(zhǔn)時(shí)間 1970 年 1 月 1 日開始的紀(jì)元開始以來的秒數(shù) 00:00:00,即Long.MIN_VALUE/1000到 Long.MAX_VALUE/1000.
'Q'自世界標(biāo)準(zhǔn)時(shí)間 1970 年 1 月 1 日開始的紀(jì)元開始以來的毫秒數(shù)00:00:00,即. Long.MIN_VALUELong.MAX_VALUE

以下轉(zhuǎn)換字符用于格式化日期:

'B'特定于語言環(huán)境的完整月份名稱"January",例如"February".
'b'特定于區(qū)域設(shè)置的縮寫月份名稱"Jan",例如"Feb".
'h'與 相同'b'。
'A'特定于語言環(huán)境的星期幾的全名,例如"Sunday""Monday"
'a'特定于語言環(huán)境的星期幾的短名稱,例如"Sun","Mon"
'C'四位數(shù)年份除以100,格式為兩位數(shù),必要時(shí)前導(dǎo)零,即00 - 99
'Y'年份,格式為至少四位數(shù)字,必要時(shí)帶有前導(dǎo)零,例如,對于公歷 ,0092等于CE。92
'y'年份的最后兩位數(shù)字,必要時(shí)用前導(dǎo)零格式化,即00 - 99.
'j'一年中的某一天,根據(jù)需要格式化為帶有前導(dǎo)零的三位數(shù)字,例如001 - 366公歷。
'm'月份,格式為兩位數(shù),必要時(shí)帶有前導(dǎo)零,即01 - 13.
'd'日期,格式為兩位數(shù),必要時(shí)帶有前導(dǎo)零,即 01 - 31
'e'日期,格式為兩位數(shù),即1 - 31.

以下轉(zhuǎn)換字符用于格式化常見的日期/時(shí)間組合。

'R'24 小時(shí)制的時(shí)間格式為 "%tH:%tM"
'T'24 小時(shí)制的時(shí)間格式為"%tH:%tM:%tS".
'r'12 小時(shí)制的時(shí)間格式為"%tI:%tM:%tS %Tp". 上午或下午標(biāo)記 ( '%Tp') 的位置可能取決于區(qū)域設(shè)置。
'D'日期格式為"%tm/%td/%ty".
'F'ISO 8601 完整日期格式為"%tY-%tm-%td".
'c'日期和時(shí)間格式為"%ta %tb %td %tT %tZ %tY",例如"Sun Jul 20 16:17:00 EDT 1969"。

任何未明確定義為日期/時(shí)間轉(zhuǎn)換后綴的字符都是非法的,并為將來的擴(kuò)展保留。

Flags

Flags一般字符整型浮點(diǎn)日期/時(shí)間描述
'-'結(jié)果將左對齊。
'#'是1-是3-結(jié)果應(yīng)使用依賴于轉(zhuǎn)換的替代形式
'+'--是4-結(jié)果將始終包含一個(gè)標(biāo)志
''--是4-結(jié)果將包括正值的前導(dǎo)空格
'0'---結(jié)果將被零填充
','--是2是5-結(jié)果將包括特定于語言環(huán)境的分組分隔符
'('--是4是5-結(jié)果將用括號括起來負(fù)數(shù)

1取決于 Formattable的定義。

2僅用于'd'conversion。

3僅適用于'o'、'x''X'conversion。

4對于'd','o','x', 和'X'conversions應(yīng)用于BigInteger'd'應(yīng)用于byte,Byte,short,Short,intInteger,long, 和Long

5僅適用于'e'、'E'、'f'、'g''G'conversion。

任何未明確定義為標(biāo)志的字符都是非法的,并為將來的擴(kuò)展保留。

到此這篇關(guān)于Java格式字符串的使用的文章就介紹到這了,更多相關(guān)Java格式字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot定義Bean的幾種實(shí)現(xiàn)方式

    SpringBoot定義Bean的幾種實(shí)現(xiàn)方式

    本文主要介紹了SpringBoot定義Bean的幾種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • JDBC實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    JDBC實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了JDBC實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Java中的Comparable和Comparator接口

    Java中的Comparable和Comparator接口

    這篇文章主要介紹了Java中的Comparable和Comparator接口,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • java對象池管理方式common-pool2使用

    java對象池管理方式common-pool2使用

    這篇文章主要為大家介紹了java對象池common-pool2使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 啟動Springboot項(xiàng)目時(shí)找不到Mapper的問題及解決

    啟動Springboot項(xiàng)目時(shí)找不到Mapper的問題及解決

    這篇文章主要介紹了啟動Springboot項(xiàng)目時(shí)找不到Mapper的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 解析JAVA深度克隆與淺度克隆的區(qū)別詳解

    解析JAVA深度克隆與淺度克隆的區(qū)別詳解

    本篇文章是對JAVA深度克隆與淺度克隆的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 用Java設(shè)計(jì)模式中的觀察者模式開發(fā)微信公眾號的例子

    用Java設(shè)計(jì)模式中的觀察者模式開發(fā)微信公眾號的例子

    這篇文章主要介紹了用Java設(shè)計(jì)模式中的觀察者模式開發(fā)微信公眾號的例子,這里Java的微信SDK等部分便不再詳述,只注重關(guān)鍵部分和開發(fā)過程中觀察者模式優(yōu)點(diǎn)的體現(xiàn),需要的朋友可以參考下
    2016-02-02
  • 配置IDEA中java項(xiàng)目配置swagger全過程

    配置IDEA中java項(xiàng)目配置swagger全過程

    這篇文章主要介紹了配置IDEA中java項(xiàng)目配置swagger全過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • SpringSecurity 手機(jī)號登錄功能實(shí)現(xiàn)

    SpringSecurity 手機(jī)號登錄功能實(shí)現(xiàn)

    這篇文章主要介紹了SpringSecurity 手機(jī)號登錄功能實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2023-12-12
  • Java實(shí)現(xiàn)深度優(yōu)先搜索(DFS)和廣度優(yōu)先搜索(BFS)算法

    Java實(shí)現(xiàn)深度優(yōu)先搜索(DFS)和廣度優(yōu)先搜索(BFS)算法

    深度優(yōu)先搜索(DFS)和廣度優(yōu)先搜索(BFS)是兩種基本的圖搜索算法,可用于圖的遍歷、路徑搜索等問題。DFS采用棧結(jié)構(gòu)實(shí)現(xiàn),從起點(diǎn)開始往深處遍歷,直到找到目標(biāo)節(jié)點(diǎn)或遍歷完整個(gè)圖;BFS采用隊(duì)列結(jié)構(gòu)實(shí)現(xiàn),從起點(diǎn)開始往廣處遍歷,直到找到目標(biāo)節(jié)點(diǎn)或遍歷完整個(gè)圖
    2023-04-04

最新評論