C#のString.Formatメソッドで文字列の変換と挿入をする方法
C#のString.Formatメソッドでは、「異なるデータ型から文字列への変換(書式指定可)」や「変換した文字列同士の連結」といった処理が実現可能です。
例えば、顧客コードを3桁で管理していて「1」を「001」に変換したいケースにも活用できます。
この記事では、String.Formatの使用方法について解説していきます。大変便利なメソッドなので、ぜひ参考にしてみてください。
- プログラマー
- 桁数不足の時に数値を0埋めしたいのですが、if文で桁数を判定して先頭に0を追加する方が良いでしょうか?
- プロジェクト
リーダー - 数値の0埋めをしたい時は、StringクラスのFormatメソッドを使用すると便利ですよ。
String.Formatメソッドの概要
Formatメソッドには複数の定義が存在しますが、主なパターンを例に挙げて紹介します。
1
|
String String.Format(String 書式, Object オブジェクト0, オブジェクト1, …)
|
文字列の書式項目を、指定されたオブジェクトの文字列形式に置換します。
オブジェクトは複数与えることもできるため、オブジェクトのインデックス番号(0始まり)で判別します。文字列形式は、書式にて「{インデックス番号:書式指定子}」の形式で指定することが可能です。
書式指定子を用いて数値を0埋めする方法
まず、標準でサポートされている主な数値の書式指定子は、下記のとおりです。
[table id=41 /]まずは、数値の1をそのまま出力してみましょう。
1
2
3
4
|
int num = 1;
String s = String.Format("num={0:D}", num);
Console.WriteLine(s);
// → 出力結果は「num=1」となります。
|
では次に、0埋めの3桁で出力したい場合、書式指定子の後ろに桁数を指定します。
1
2
3
4
|
int num = 1;
String s = String.Format("num={0:D3}", num);
Console.WriteLine(s);
// → 出力結果は「num=001」となります。
|
もしくは、書式設定子の代わりに0を並べても可能です。
1
2
3
4
|
int num = 1;
String s = String.Format("num={0:000}", num);
Console.WriteLine(s);
// → 出力結果は「num=001」となります。
|
複数の書式項目を指定する方法
次は、複数の書式項目を指定してみましょう。
例えば、単価と数量の数値を用いて、乗算した計算結果を出力します。
1
2
3
4
5
|
int tanka = 200;
int suryo = 5;
String kekka = String.Format("{0:C}×{1}={2:C}", tanka, suryo, tanka*suryo);
Console.WriteLine(kekka);
// → 出力結果は「\200×5=\1,000」となります。
|
{0}にはtanka、{1}にはsuryo、{2}にはtanka*suryo が挿入されます。
また、書式指定子の「C」によって通貨形式を指定していますね。
同じ書式項目を複数回指定する例も紹介します。同じ数値を10進数と16進数で出力します。
1
2
3
4
|
int num = 255;
string kekka = string.Format("{0:D}を16進数で表すと{0:X}", num);
Console.WriteLine(kekka);
// → 出力結果は「255を16進数で表すとFF」となります。
|
{0}は同じですが、書式指定によってD(10進数)とX(16進数)を指定していますね。
結果の文字列に中括弧を含める方法
書式項目は{0}のように中括弧で囲んで指定していますが、中括弧自体を文字列に含めたい場合は、どうすれば良いのでしょうか。
1
2
3
4
|
int index = 1;
string kekka = string.Format("中括弧にインデックス番号を指定(例:{{{0}}})", index);
Console.WriteLine(kekka);
// → 出力結果は「中括弧にインデックス番号を指定(例:{1})」となります。
|
中括弧を二重にすることで文字列の中括弧としてみなされて、内部の{0}は今までの要領で置換されていますね。
もしコードが見にくいと感じる方は、複数指定を活用して実現することも可能です。
1
2
3
4
|
int index = 1;
string kekka = string.Format("中括弧にインデックス番号を指定(例:{0}{1}{2})", "{", index, "}");
Console.WriteLine(kekka);
// → 出力結果は「中括弧にインデックス番号を指定(例:{1})」となります。
|
- プログラマー
- なるほど、こんな便利なメソッドがあったのですね!
- プロジェクト
リーダー - そうですね。この機会に、String.Formatを使用して様々な文字列を作成してみてください。
String.Formatメソッドで数値を文字列に変換
今回はString.Formatを使用した文字列の変換を紹介しました。プログラムを組む上で、変数の値を文字列に変換したい場面は多々発生すると思います。すでに用意されているクラスやメソッドを活用して、効率良くコーディングを進めていきたいですね。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)