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は異なる日付と時刻のコンバータを表す) 例なし(基本的に使用しない)
<スパン ---------- -
不備がある場合は、コメントを残してください。
互いに学び合い、共に向上する
関連
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
サーブレットクラスのインスタンス化エラーの解決法
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
java 例外。Javaツールの初期化
-
IDEA パッケージステートメントの欠落
-
dao インターフェースがメソッドを定義し、エラーを報告した。 xxx 型のメソッド xxx は未定義である。
-
コンピュータ教育で足りない授業、手遅れになる前に補うようにアドバイス、仕事の後の半分の努力で2倍の結果が得られる!?
-
Android TextViewの行間解析
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Javaクラスローダーにソースコードから潜り込む
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
HttpClientがGZIP形式でない場合の対処法
-
プラグインの実行は、ライフサイクル構成によってカバーされていません: org.codehaus.mojo:aspectj-maven-plugin:1.3.
-
トークンの構文エラー、構成要素の誤配置 エラーの理由
-
JAVA のエラーです。公開型***は、独自のファイルで定義する必要があります***。
-
javaで "Unhandled exception type ...... "を処理するには?
-
Swagger の @ApiModelProperty オブジェクト フィールドが表示されない
-
javaException: 比較メソッドが一般契約に違反しています!