JAVA字符串占位符使用方法實(shí)例
使用 replace 函數(shù)動(dòng)態(tài)填充字符串
String str="Hello {0},我是 {1},今年{2}歲"; str = str.replace("{0}", "CSDN"); str = str.replace("{1}", "小豬"); str = str.replace("{2}", "12"); System.out.println(str);
使用 String.format() 占位符替換
作用:使用指定的格式字符串和參數(shù)返回一個(gè)格式化字符串。
String str=String.format("Hello %s,我是 %s,今年 %s 歲", "CSDN","小豬","12"); System.out.println(str);
String.format 作為文本處理工具,為我們提供強(qiáng)大而豐富的字符串格式化功能,為了不止步于簡(jiǎn)單調(diào)用 String.format("Hello %s", "CSDN");
String.format 使用
1、占位符
占位符格式:
%[index$][標(biāo)識(shí)]*[最小寬度][.精度]轉(zhuǎn)換符
針對(duì)不同數(shù)據(jù)類(lèi)型的格式化,占位符的格式將有所裁剪。
- %:占位符的其實(shí)字符,若要在占位符內(nèi)部使用%,則需要寫(xiě)成%%。
- [index$]:位置索引從1開(kāi)始計(jì)算,用于指定對(duì)索引相應(yīng)的實(shí)參進(jìn)行格式化并替換掉該占位符。
- [標(biāo)識(shí)]:用于增強(qiáng)格式化能力,可同時(shí)使用多個(gè)[標(biāo)識(shí)],但某些標(biāo)識(shí)是不能同時(shí)使用的。
- [最小寬度]:用于設(shè)置格式化后的字符串最小長(zhǎng)度,若使用[最小寬度]而無(wú)設(shè)置[標(biāo)識(shí)],那么當(dāng)字符串長(zhǎng)度小于最小寬度時(shí),則以左邊補(bǔ)空格的方式湊夠最小寬度。
- [.精度]:對(duì)于浮點(diǎn)數(shù)類(lèi)型格式化使用,設(shè)置保留小數(shù)點(diǎn)后多少位。
- 轉(zhuǎn)換符:用于指定格式化的樣式,和限制對(duì)應(yīng)入?yún)⒌臄?shù)據(jù)類(lèi)型。
2、對(duì)字符或字符串操作
占位符格式:
%[index$][標(biāo)識(shí)][最小寬度]轉(zhuǎn)換符
示例1
String str = "CSDN"; String result = String.format("%1$7s", str); System.out.println("Hello" + result); // 簡(jiǎn)化 result = String.format("%7s", str); System.out.println("Hello" + result); // 結(jié)果: Hello CSDN Hello CSDN
示例2
String str = "CSDN"; String result = String.format("%1$-7s", str); System.out.println("Hello" + result + ","); // 簡(jiǎn)化 result = String.format("%-7s", str); System.out.println("Hello" + result + ","); // 結(jié)果: HelloCSDN , HelloCSDN ,
可用標(biāo)識(shí)
- -,在最小寬度內(nèi)左對(duì)齊,右邊用空格補(bǔ)上。
可用轉(zhuǎn)換符
- s,字符串類(lèi)型。
- c,字符類(lèi)型,實(shí)參必須為char或int、short等可轉(zhuǎn)換為char類(lèi)型的數(shù)據(jù)類(lèi)型,否則拋IllegalFormatConversionException異常。
- b,布爾類(lèi)型,只要實(shí)參為非false的布爾類(lèi)型,均格式化為字符串true,否則為字符串false。
- n,平臺(tái) 獨(dú)立的換行符(與通過(guò) System.getProperty("line.separator") 是一樣的)
3、對(duì)整數(shù)操作
占位符格式
%[index$][標(biāo)識(shí)]*[最小寬度]轉(zhuǎn)換符
示例1
將1顯示為0001
int num = 1; String str = String.format("%04d", num); System.out.println(str); // 結(jié)果: 0001
示例2
將-1000顯示為(1,000)
int num = -1000; String str = String.format("%(,d", num); System.out.println(str); // 結(jié)果: (1,000)
可用標(biāo)識(shí):
- -,在最小寬度內(nèi)左對(duì)齊,不可以與0標(biāo)識(shí)一起使用。
- 0,若內(nèi)容長(zhǎng)度不足最小寬度,則在左邊用0來(lái)填充。
- #,對(duì)8進(jìn)制和16進(jìn)制,8進(jìn)制前添加一個(gè)0,16進(jìn)制前添加0x。
- +,結(jié)果總包含一個(gè)+或-號(hào)。
- 空格,正數(shù)前加空格,負(fù)數(shù)前加-號(hào)。
- ,,只用與十進(jìn)制,每3位數(shù)字間用,分隔。
- (,若結(jié)果為負(fù)數(shù),則用括號(hào)括住,且不顯示符號(hào)。
可用轉(zhuǎn)換符:
- b,布爾類(lèi)型,只要實(shí)參為非false的布爾類(lèi)型,均格式化為字符串true,否則為字符串false。
- d,整數(shù)類(lèi)型(十進(jìn)制)。
- x,整數(shù)類(lèi)型(十六進(jìn)制)。
- o,整數(shù)類(lèi)型(八進(jìn)制)
- n,平臺(tái) 獨(dú)立的換行符, 也可通過(guò)System.getProperty("line.separator")獲取
4、對(duì)浮點(diǎn)數(shù)操作
占位符格式:
%[index$][標(biāo)識(shí)]*[最小寬度][.精度]轉(zhuǎn)換符
示例:
double num = 123.4567899; System.out.print(String.format("%f %n", num)); System.out.print(String.format("%a %n", num)); System.out.print(String.format("%g %n", num)); // 結(jié)果 123.456790 0x1.edd3c0bb46929p6 123.457
可用標(biāo)識(shí):
- -,在最小寬度內(nèi)左對(duì)齊,不可以與0標(biāo)識(shí)一起使用。
- 0,若內(nèi)容長(zhǎng)度不足最小寬度,則在左邊用0來(lái)填充。
- #,對(duì)8進(jìn)制和16進(jìn)制,8進(jìn)制前添加一個(gè)0,16進(jìn)制前添加0x。
- +,結(jié)果總包含一個(gè)+或-號(hào)。
- 空格,正數(shù)前加空格,負(fù)數(shù)前加-號(hào)。
- ,,只用與十進(jìn)制,每3位數(shù)字間用,分隔。
- (,若結(jié)果為負(fù)數(shù),則用括號(hào)括住,且不顯示符號(hào)。
可用轉(zhuǎn)換符:
- b,布爾類(lèi)型,只要實(shí)參為非false的布爾類(lèi)型,均格式化為字符串true,否則為字符串false。
- n,平臺(tái) 獨(dú)立的換行符, 也可通過(guò)System.getProperty("line.separator")獲取。
- f,浮點(diǎn)數(shù)型(十進(jìn)制)。顯示9位有效數(shù)字,且會(huì)進(jìn)行四舍五入。如99.99。
- a,浮點(diǎn)數(shù)型(十六進(jìn)制)。
- e,指數(shù)類(lèi)型。如9.38e+5。
- g,浮點(diǎn)數(shù)型(比%f,%a長(zhǎng)度短些,顯示6位有效數(shù)字,且會(huì)進(jìn)行四舍五入)
5、對(duì)日期時(shí)間操作
占位符格式:
%[index$]t轉(zhuǎn)換符
示例1
String str = String.format("%tF", new Date()); System.out.println(str); // 結(jié)果 2020-12-15
可用轉(zhuǎn)換符
1)日期的轉(zhuǎn)換符
- c,星期六 十月 27 14:21:20 CST 2007
- F,2007-10-27
- D,10/27/07
- r,02:25:51 下午
- T,14:28:16
- R,14:28
- b, 月份簡(jiǎn)稱(chēng)
- B, 月份全稱(chēng)
- a, 星期簡(jiǎn)稱(chēng)
- A, 星期全稱(chēng)
- C, 年前兩位(不足兩位補(bǔ)零)
- y, 年后兩位(不足兩位補(bǔ)零)
- j, 當(dāng)年的第幾天
- m, 月份(不足兩位補(bǔ)零)
- d, 日期(不足兩位補(bǔ)零)
- e, 日期(不足兩位不補(bǔ)零)
2)時(shí)間的轉(zhuǎn)換符
- H, 24小時(shí)制的小時(shí)(不足兩位補(bǔ)零)
- k, 24小時(shí)制的小時(shí)(不足兩位不補(bǔ)零)
- I, 12小時(shí)制的小時(shí)(不足兩位補(bǔ)零)
- i, 12小時(shí)制的小時(shí)(不足兩位不補(bǔ)零)
- M, 分鐘(不足兩位補(bǔ)零)
- S, 秒(不足兩位補(bǔ)零)
- L, 毫秒(不足三位補(bǔ)零)
- N, 毫秒(不足9位補(bǔ)零)
- p, 小寫(xiě)字母的上午或下午標(biāo)記,如中文為“下午”,英文為pm
- z, 相對(duì)于GMT的時(shí)區(qū)偏移量,如+0800
- Z, 時(shí)區(qū)縮寫(xiě),如CST
- s, 自1970-1-1 00:00:00起經(jīng)過(guò)的秒數(shù)
- Q, 自1970-1-1 00:00:00起經(jīng)過(guò)的豪秒
常用的類(lèi)型關(guān)系:
轉(zhuǎn)換符 | 詳細(xì)說(shuō)明 | 示例 |
---|---|---|
%s | 字符串類(lèi)型 | “喜歡請(qǐng)收藏” |
%c | 字符類(lèi)型 | ‘m’ |
%b | 布爾類(lèi)型 | true |
%d | 整數(shù)類(lèi)型(十進(jìn)制) | 88 |
%x | 整數(shù)類(lèi)型(十六進(jìn)制) | FF |
%o | 整數(shù)類(lèi)型(八進(jìn)制) | 77 |
%f | 浮點(diǎn)類(lèi)型 | 8.888 |
%a | 十六進(jìn)制浮點(diǎn)類(lèi)型 | FF.35AE |
%e | 指數(shù)類(lèi)型 | 9.38e+5 |
%g | 通用浮點(diǎn)類(lèi)型(f和e類(lèi)型中較短的) | 不舉例(基本用不到) |
%h | 散列碼 | 不舉例(基本用不到) |
%% | 百分比類(lèi)型 | %(%特殊字符%%才能顯示%) |
%n | 換行符 | 不舉例(基本用不到) |
%tx | 日期與時(shí)間類(lèi)型(x代表不同的日期與時(shí)間轉(zhuǎn)換符) | 不舉例(基本用不到) |
補(bǔ)充:Java替換字符串中的占位符
在開(kāi)發(fā)中,會(huì)有動(dòng)態(tài)配置字符串其中的某些字符,如何使用字符中的占位符,并且在代碼動(dòng)態(tài)替換占位符實(shí)現(xiàn)動(dòng)態(tài)配置字符串!
1.定義字符串時(shí),再string文件添加字符串:
注意!記得要在字符文件中加上這些:
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="text1">i am %1$d years old, i am a %2$s</string>
屬性值定義如下:
%n$m[d/f/s] 表示 第n個(gè)參數(shù),前面有m個(gè)空格(0m表示有m個(gè)0,浮點(diǎn)數(shù)k.m,表示小數(shù)點(diǎn)前保留k位,小數(shù)點(diǎn)后保留m位),d為整數(shù),f為浮點(diǎn)數(shù),s為字符串。
2.在代碼中使用:
String text1 = Context.getResources().getString(R.string.text1); //注意,Andorid中的Context.getString()與Context.getResources().getString()是一樣的,詳細(xì)可看Context源碼0.0 String text2 = String.format(text1,25,"engineer");//"i am 25 years old, i am a engineer"
使用String.format()方法,第一個(gè)參數(shù)為字符串,后面依次為替換占位符的字符串?!?/p>
總結(jié)
到此這篇關(guān)于JAVA字符串占位符使用的文章就介紹到這了,更多相關(guān)JAVA字符串占位符使用 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring AOP與AspectJ的對(duì)比及應(yīng)用詳解
這篇文章主要為大家介紹了Spring AOP與AspectJ的對(duì)比及應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Spring中三種常見(jiàn)Bean的初始化參數(shù)機(jī)制你了解嗎
在Spring框架中,Bean的實(shí)例化與初始化是一個(gè)復(fù)雜的過(guò)程,本文我們主要來(lái)聊一聊它的常見(jiàn)的三種機(jī)制:InitializingBean接口、BeanDefinitionRegistryPostProcessor接口和EnvironmentAware接口,感興趣的小伙伴可以了解下2023-11-11深度解析Java中volatile的內(nèi)存語(yǔ)義實(shí)現(xiàn)以及運(yùn)用場(chǎng)景
這篇文章主要介紹了Java中volatile的內(nèi)存語(yǔ)義實(shí)現(xiàn)以及運(yùn)用場(chǎng)景,通過(guò)JVM的機(jī)制來(lái)分析volatile關(guān)鍵字在線(xiàn)程編程中的作用,需要的朋友可以參考下2015-12-12MyBatis Properties及別名定義實(shí)例詳解
這篇文章主要介紹了MyBatis Properties及別名定義實(shí)例詳解,需要的朋友可以參考下2017-08-08Mybatis查詢(xún)多條記錄并返回List集合的方法
這篇文章主要介紹了Mybatis查詢(xún)多條記錄并返回List集合的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09java線(xiàn)程池參數(shù)自定義設(shè)置詳解
這篇文章主要為大家介紹了java線(xiàn)程池參數(shù)自定義設(shè)置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11java實(shí)現(xiàn)簡(jiǎn)單注冊(cè)選擇所在城市
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單注冊(cè)選擇所在城市的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04Spring Boot修改內(nèi)置Tomcat默認(rèn)端口號(hào)的示例
本篇文章主要介紹了Spring Boot修改內(nèi)置Tomcat端口號(hào)的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08