首頁 > 軟體

JAVA字串預留位置使用方法範例

2022-11-28 22:01:54

使用 replace 函數動態填充字串

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() 預留位置替換

作用:使用指定的格式字串和引數返回一個格式化字串。

String str=String.format("Hello %s,我是 %s,今年 %s 歲", "CSDN","小豬","12");
System.out.println(str);

String.format 作為文書處理工具,為我們提供強大而豐富的字串格式化功能,為了不止步於簡單呼叫 String.format("Hello %s", "CSDN");

String.format 使用

1、預留位置

預留位置格式:

%[index$][標識]*[最小寬度][.精度]轉換符

針對不同資料型別的格式化,預留位置的格式將有所裁剪。

  • %:預留位置的其實字元,若要在預留位置內部使用%,則需要寫成%%。
  • [index$]:位置索引從1開始計算,用於指定對索引相應的實參進行格式化並替換掉該預留位置。
  • [標識]:用於增強格式化能力,可同時使用多個[標識],但某些標識是不能同時使用的。
  • [最小寬度]:用於設定格式化後的字串最小長度,若使用[最小寬度]而無設定[標識],那麼當字串長度小於最小寬度時,則以左邊補空格的方式湊夠最小寬度。
  • [.精度]:對於浮點數型別格式化使用,設定保留小數點後多少位。
  • 轉換符:用於指定格式化的樣式,和限制對應入參的資料型別。

2、對字元或字串操作

預留位置格式:

 %[index$][標識][最小寬度]轉換符

範例1

String str = "CSDN";
String result = String.format("%1$7s", str);
System.out.println("Hello" + result);
// 簡化
result = String.format("%7s", str);
System.out.println("Hello" + result);
 
// 結果:
Hello   CSDN
Hello   CSDN

範例2

String str = "CSDN";
String result = String.format("%1$-7s", str);
System.out.println("Hello" + result + ",");
// 簡化
result = String.format("%-7s", str);
System.out.println("Hello" + result + ",");
 
// 結果:
HelloCSDN   ,
HelloCSDN   ,

可用標識

  • -,在最小寬度內左對齊,右邊用空格補上。

可用轉換符

  • s,字串型別。
  • c,字元型別,實參必須為char或int、short等可轉換為char型別的資料型別,否則拋IllegalFormatConversionException異常。
  • b,布林型別,只要實參為非false的布林型別,均格式化為字串true,否則為字串false。
  • n,平臺 獨立的換行符(與通過 System.getProperty("line.separator") 是一樣的)

3、對整數操作

預留位置格式

 %[index$][標識]*[最小寬度]轉換符

範例1

將1顯示為0001

int num = 1;
String str = String.format("%04d", num);
System.out.println(str);
 
// 結果:
0001

範例2

將-1000顯示為(1,000)

int num = -1000;
String str = String.format("%(,d", num);
System.out.println(str);
 
// 結果:
(1,000)

可用標識:

  • -,在最小寬度內左對齊,不可以與0標識一起使用。
  • 0,若內容長度不足最小寬度,則在左邊用0來填充。
  • #,對8進位制和16進位制,8進位制前新增一個0,16進位制前新增0x。
  • +,結果總包含一個+或-號。
  • 空格,正數前加空格,負數前加-號。
  • ,,只用與十進位制,每3位數位間用,分隔。
  • (,若結果為負數,則用括號括住,且不顯示符號。

可用轉換符:

  • b,布林型別,只要實參為非false的布林型別,均格式化為字串true,否則為字串false。
  • d,整數型別(十進位制)。
  • x,整數型別(十六進位制)。
  • o,整數型別(八進位制)
  • n,平臺 獨立的換行符, 也可通過System.getProperty("line.separator")獲取

4、對浮點數操作

預留位置格式:

%[index$][標識]*[最小寬度][.精度]轉換符

範例:

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));
 
// 結果
123.456790 
0x1.edd3c0bb46929p6 
123.457 

可用標識:

  • -,在最小寬度內左對齊,不可以與0標識一起使用。
  • 0,若內容長度不足最小寬度,則在左邊用0來填充。
  • #,對8進位制和16進位制,8進位制前新增一個0,16進位制前新增0x。
  • +,結果總包含一個+或-號。
  • 空格,正數前加空格,負數前加-號。
  • ,,只用與十進位制,每3位數位間用,分隔。
  • (,若結果為負數,則用括號括住,且不顯示符號。

可用轉換符:

  • b,布林型別,只要實參為非false的布林型別,均格式化為字串true,否則為字串false。
  • n,平臺 獨立的換行符, 也可通過System.getProperty("line.separator")獲取。
  • f,浮點數型(十進位制)。顯示9位有效數位,且會進行四捨五入。如99.99。
  • a,浮點數型(十六進位制)。
  • e,指數型別。如9.38e+5。
  • g,浮點數型(比%f,%a長度短些,顯示6位有效數位,且會進行四捨五入)

5、對日期時間操作

預留位置格式:

%[index$]t轉換符

範例1

String str = String.format("%tF", new Date());
System.out.println(str);
 
// 結果
2020-12-15

可用轉換符

1)日期的轉換符

  • 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, 月份簡稱
  • B, 月份全稱
  • a, 星期簡稱
  • A, 星期全稱
  • C, 年前兩位(不足兩位補零)
  • y, 年後兩位(不足兩位補零)
  • j, 當年的第幾天
  • m, 月份(不足兩位補零)
  • d, 日期(不足兩位補零)
  • e, 日期(不足兩位不補零)

2)時間的轉換符

  • H, 24小時制的小時(不足兩位補零)
  • k, 24小時制的小時(不足兩位不補零)
  • I, 12小時制的小時(不足兩位補零)
  • i, 12小時制的小時(不足兩位不補零)
  • M, 分鐘(不足兩位補零)
  • S, 秒(不足兩位補零)
  • L, 毫秒(不足三位補零)
  • N, 毫秒(不足9位補零)
  • p, 小寫字母的上午或下午標記,如中文為“下午”,英文為pm
  • z, 相對於GMT的時區偏移量,如+0800
  • Z, 時區縮寫,如CST
  • s, 自1970-1-1 00:00:00起經過的秒數
  • Q, 自1970-1-1 00:00:00起經過的豪秒

常用的型別關係:

轉換符詳細說明範例
%s字串型別“喜歡請收藏”
%c字元型別‘m’
%b布林型別true
%d整數型別(十進位制)88
%x整數型別(十六進位制)FF
%o整數型別(八進位制)77
%f浮點型別8.888
%a十六進位制浮點型別FF.35AE
%e指數型別9.38e+5
%g通用浮點型別(f和e型別中較短的)不舉例(基本用不到)
%h雜湊碼不舉例(基本用不到)
%%百分比型別%(%特殊字元%%才能顯示%)
%n換行符不舉例(基本用不到)
%tx日期與時間型別(x代表不同的日期與時間轉換符)不舉例(基本用不到)

補充:Java替換字串中的預留位置

在開發中,會有動態設定字串其中的某些字元,如何使用字元中的預留位置,並且在程式碼動態替換預留位置實現動態設定字串!

1.定義字串時,再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個引數,前面有m個空格(0m表示有m個0,浮點數k.m,表示小數點前保留k位,小數點後保留m位),d為整數,f為浮點數,s為字串。

2.在程式碼中使用:

String text1 = Context.getResources().getString(R.string.text1);
//注意,Andorid中的Context.getString()與Context.getResources().getString()是一樣的,詳細可看Context原始碼0.0
String text2 = String.format(text1,25,"engineer");//"i am 25 years old, i am a engineer"

使用String.format()方法,第一個引數為字串,後面依次為替換預留位置的字串。 

總結

到此這篇關於JAVA字串預留位置使用的文章就介紹到這了,更多相關JAVA字串預留位置使用 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com