1. ホーム
  2. java

Java文字列プレースホルダー使用

2022-02-21 05:43:56

<スパン 知識を共有し、喜びを広げる

replace関数で文字列を動的に埋める

String str = "Hello {0}, I'm {1}, I'm {2} years old";
str = str.replace("{0}", "CSDN");
str = str.replace("{1}", "Piglet");
str = str.replace("{2}", "12");
System.out.println(str);


String.format()プレースホルダーに置き換える。

役割 指定されたフォーマット文字列とパラメータを使用して、フォーマットされた文字列を返します。

String str=String.format("Hello %s, I am %s, %s year old", "CSDN","Piglet","12");
System.out.println(str);

String.format は、単に String.format("Hello %s", "CSDN") を呼ぶだけでは終わらない、強力で豊富な文字列フォーマット機能を提供してくれるテキスト処理ツールなのです。

String.formatの用途

1. プレースホルダー

プレースホルダーの形式です。

%[index$][identity]*[min-width][. precision] convertor

プレースホルダーのフォーマットは、異なるデータ型をフォーマットするためにトリミングされます。

  • %: プレースホルダの実際の文字。プレースホルダの中で%を使うには、%%と書く必要がある。
  • [index$]: 1からの位置インデックス、インデックスに対応する実パラメータのフォーマットを指定し、プレースホルダを置き換えるために使用されます。
  • [識別子]: フォーマットを強化するために使用されます。複数の [識別子] を同時に使用することができますが、同時に使用できない識別子もあります。
  • [min-width]: フォーマットされた文字列の最小の長さを設定するために使用します。min-width]が[logo]なしで使われた場合、文字列の長さが最小幅より小さいとき、最小幅は左側にスペースを入れて切り上げられます。
  • [精度]: 浮動小数点型のフォーマットで使用する場合、小数点以下何桁まで保持するか設定します。
  • コンバーター:書式を指定したり、対応する入力パラメーターのデータ型を制限するために使用します。


2. 文字または文字列を操作する

プレースホルダーの形式です。

 %[index$][identity][min-width]-converter

例1

String str = "CSDN";
String result = String.format("%1$7s", str);
System.out.println("Hello" + result);
// Simplify
result = String.format("%7s", str);
System.out.println("Hello" + result);

// Result.
Hello CSDN
Hello CSDN

例2

String str = "CSDN";
String result = String.format("%1$-7s", str);
System.out.println("Hello" + result + ",");
// Simplify
result = String.format("%-7s", str);
System.out.println("Hello" + result + ",");

// Result.
HelloCSDN ,
HelloCSDN ,

利用可能なロゴ

  • -、最小幅内で左寄せ、右側に記入するスペースがあります。

利用可能なコンバータ

  • s、文字列型。
  • c, 文字型, 実パラメータは char または int, short または char 型に変換できる他のデータ型でなければならず、そうでなければ IllegalFormatConversionException をスローします。
  • b, boolean型, 実パラメータが偽でないboolean型である限り、文字列trueとしてフォーマットされ、それ以外は文字列falseとなります。
  • n, プラットフォームに依存しない改行 (System.getProperty("line.separator") を介したものと同じ)


3. 整数を演算する

プレースホルダー形式

 %[index$][identity]*[min-width]-converter

例1

1を0001と表示する

int num = 1;
String str = String.format("%04d", num);
System.out.println(str);

// Result.
0001





例2

1000を(1000)と表示する。

int num = -1000;
String str = String.format("%(,d", num);
System.out.println(str);

// Result.
(1,000)

利用可能な識別子。

  • -、最小幅内で左寄せ、0ロゴでは使用不可。
  • 0, コンテンツの長さが最小幅より小さい場合、左側に0を付けてパディングします。
  • #, 8と16の場合、8の前に0を、16の前に0xを追加します。
  • +, 結果には必ず + または - の記号が含まれます。
  • スペース、正の数の前にはスペースが、負の数の前には-記号が付きます。
  • は10進数の場合のみ使用し、3桁ごとに , で区切ります。
  • (, 結果が負の場合は括弧で囲まれ、符号は表示されません。)

利用可能なコンバータです。

  • b, 論理型, 実パラメータが偽でない論理型である場合は文字列true、それ以外の場合は文字列falseとしてフォーマットされます。
  • d, 整数型(10進数)。
  • x, 整数型(16進数)です。
  • o, 整数型(8進数)
  • n, プラットフォームに依存しない改行。System.getProperty("line.separator")でも取得可能。


4. 浮動小数点数に対する操作

プレースホルダーの形式です。

%[index$][identity]*[min-width][. precision] convertor

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));

// Result
123.456790 
0x1.edd3c0bb46929p6 
123.457 


利用可能な識別子。

  • -、最小幅内で左寄せ、0ロゴでは使用不可。
  • 0, コンテンツの長さが最小幅より小さい場合、左側に0を付けてパディングします。
  • #, 8と16の場合、8の前に0を、16の前に0xを追加します。
  • +, 結果には必ず + または - の記号が含まれます。
  • スペース、正の数の前にはスペースが、負の数の前には-記号が付きます。
  • は10進数の場合のみ使用し、3桁ごとに , で区切ります。
  • (, 結果が負の場合は括弧で囲まれ、符号は表示されません。)

利用可能なコンバータです。

  • b, 論理型, 実パラメータが偽でない論理型である場合は文字列true、それ以外の場合は文字列falseとしてフォーマットされます。
  • n, プラットフォームに依存しない改行。System.getProperty("line.separator")によっても利用可能です。
  • f, 浮動小数点型(10進数)。有効数字9桁を表示し、四捨五入される。例:99.99。
  • a, 浮動小数点型(16進数)。
  • e, 指数型。例えば、9.38e+5。
  • g, 浮動小数点型 (%f, %a よりも短く、有効数字6桁を表示し、丸められます)


5. 日付と時刻に関する操作

プレースホルダーの形式です。

%[index$]t convertor

例1

String str = String.format("%tF", new Date());
System.out.println(str);

// Result
2020-12-15





利用可能なコンバーター

1) 日付の変換ツール

  • c, Sat Oct 27 14:21:20 CST 2007
  • F, 2007-10-27
  • D, 10/27/07
  • r, 02:25:51 PM
  • T, 14:28:16
  • R, 14:28
  • b, 月の略語
  • B, 月の正式名称
  • a, 週の略称
  • A, 完全な週名
  • C, 年の最初の2日間(0を補うために2より少なくする)
  • y, 年の後の2桁の数字(ゼロが2つ以下)
  • j, その年の最初の日
  • m, 月 (ゼロが2つ以下)
  • d, 日付 (2桁以下)
  • e, 日付 (2桁未満はゼロを含まない)

2) 時刻の変換文字

  • H、24時間形式の時間(ゼロを補うため2桁以下)
  • k, 24時間形式の時間(足りない桁にゼロをつけない)
  • I, 12時間表示の時(ゼロが2つ以下)
  • i, 12時間形式の時間(桁不足の場合はゼロを使用しない)。
  • M, 分(ゼロ2個以下)
  • S, セコンド(ゼロ2個未満)
  • L, ミリ秒(ゼロを補うために3未満とする)
  • N、ミリ秒(ゼロを補う9桁未満)
  • p, 午前または午後のマーカーを小文字で表記します。
  • z, GMTを基準としたタイムゾーンのオフセット、例: +0800
  • Z:タイムゾーンの略語(例:CST
  • s, 1970-1-1 00:00:00からの経過秒数
  • Q, 1970-1-1 00:00:00から経過したホ秒数

一般的な型の関係。

<テーブル 変換文字 詳細説明 使用例 %s 文字列の種類 いいね!ブックマークしてください" %c 文字の種類 'm' %b ブーリアン型 真 %d 整数型(10進数) 88 %x 整数型(16進数) FF %o 整数型(8進数) 77 %f 浮動小数点型 8.888 %a 16進浮動小数点型 FF.35AE %e インデックスタイプ 9.38e+5 %g 汎用浮動小数点型(f型とe型の短い方) 例なし(基本的に使用しない) %h ハッシュコード 例なし(基本的に使用しない) %% パーセンテージの種類 % (%を表示するための特殊文字 %%) %n 改行 例なし(基本的に使用しない) %tx 日付と時刻の種類(xは異なる日付と時刻のコンバータを表す) 例なし(基本的に使用しない)

<スパン ---------- -

不備がある場合は、コメントを残してください。
互いに学び合い、共に向上する