C#で{0}を使って文字列に変数を埋め込む方法|文字列の結合方法など紹介

- システム
エンジニア - 文字列補間について教えてください。
- プロジェクト
マネージャー - では{0}を利用した文字列に変数を埋め込む方法を実際のコードを見ながら理解していきましょう。
C#で{0}を使って文字列に変数を埋め込むとは?
今回は、C#で文字列に変数を埋め込む方法についてご紹介します。
C#ではString.Formatメソッドと、{0}のようにカッコ形式で記述する書式指定項目を駆使することで、文字列に変数を埋め込めます。また、書式指定子を指定することで数値のゼロ埋めやパーセント表示された文字列を取得できます。
使い方次第では大変便利ですので、C#で文字列に変数を埋め込む方法や書式指定子について興味がある方はぜひご覧ください。
C#で{0}を使って文字列に変数を埋め込む方法
ここでは、String.Formatメソッドや書式指定子を取り上げてC#で{0}を使って文字列に変数を埋め込む方法を紹介します。サンプルプログラムもありますので、ぜひ参考にしてみてください。
String.Formatメソッド
C#のString.Formatメソッドは、第1引数に指定した書式に対し、第2引数以降で指定したオブジェクトを変換し、変換結果を得られます。戻り値は文字列型です。
1
2
3
|
String.Format(書式文字列, オブジェクト0, オブジェクト1, ・・・)
|
埋め込む場所は{0}のように、カッコで囲み、番号を指定します。これを書式指定項目と呼びます。そして上記のようにオブジェクトは複数指定できるため、{0}、{1}・・・のように、書式指定項目には0始まりの番号をカッコに指定します。
書式指定項目の構文は次のとおりです。
1
2
3
|
{index[,alignment][:formatString]}
|
[]は省略可能です。alignmentは引数が設定されるフィールドの合計長と、フィールドが右揃え(正の数)または左揃え(負の数)であるかを表す符号付きの整数です。
alignmentの値に応じた実行結果の違いを、サンプルプログラムで確認してみます。
1
2
3
4
5
6
7
|
int num = 1000;
// 書式変換・コンソール表示
string s = String.Format(""右揃え:{0, 10} 左揃え:{1, -10}"", num, num);
Console.WriteLine(s);
|
実行結果が次のように出力されます。
右揃え: 1000 左揃え:1000
formatStringは書式指定子を指定します。書式指定子については後述します。
書式指定子
C#の書式指定子は数値書式の種類(通貨やパーセントなど)を指定する単一の英文字です。書式指定子について表形式でまとめました。
また、ゼロ埋めや3桁カンマ区切り、パーセント表示などが可能なカスタム指定子も表形式でまとめました。
書式指定子 | 説明 |
---|---|
C | 通貨 |
D | 10進数 |
E | 指数 |
F | 固定小数点 |
G | 全般 |
N | 数値 |
P | パーセント |
カスタム指定子 | 説明 |
---|---|
0 | ゼロ埋め出力 |
# | 桁数指定 |
. | 小数点以下の桁数指定 |
, | 3桁カンマ区切り |
% | パーセント表示 |
; | 書式を複数指定する場合、区切りで使用 |
C#の書式指定子について、通貨の書式指定子「C」を使ったサンプルプログラムです。
1
2
3
4
5
6
7
|
int num = 1000;
// 書式変換・コンソール表示
string s = String.Format(""出力結果は{0:C}です"", num);
Console.WriteLine(s);
|
実行結果は次のように出力されます。
出力結果は\1,000です
\が先頭に付与され、3桁ごとにカンマが付いた状態で出力されます。日本語環境で実行したため\が付与されましたが、環境の言語設定に応じて\が$に変わったりします。
そのほか、指数「E」やパーセント「P」を書式指定子に使った例です。
1
2
3
4
5
6
7
8
9
10
11
12
|
// 書式変換・コンソール表示
// 指数
int num = 3;
string s = String.Format(""指数:{0:E}"", num);
Console.WriteLine(s);
// パーセント
num = 1;
s = String.Format(""パーセント:{0:P}"", num);
Console.WriteLine(s);
|
実行結果は次のようになります。
指数:3.000000E+000
パーセント:100.00 %
サンプルプログラム
ここまでC#におけるString.Formatメソッドの構文、そして書式指定子について説明しました。それを踏まえ、String.Formatメソッドを使ったいくつかのサンプルプログラムを示します。
①複数の書式指定子項目を使用する
四則演算の結果を出力するサンプルプログラムです。複数の書式指定項目を使用してみました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
int num1 = 100;
int num2 = 15;
// 書式変換・コンソール表示
// 足し算
string s = String.Format(""{0}+{1}の計算結果は{2}です。"", num1, num2, num1 + num2);
Console.WriteLine(s);
// 引き算
s = String.Format(""{0}-{1}の計算結果は{2}です。"", num1, num2, num1 - num2);
Console.WriteLine(s);
// かけ算
s = String.Format(""{0}×{1}の計算結果は{2}です。"", num1, num2, num1 * num2);
Console.WriteLine(s);
// 割り算
s = String.Format(""{0}÷{1}の計算結果は{2}余り{3}です。"", num1, num2, num1 / num2, num1 % num2);
Console.WriteLine(s);
|
実行結果は次のように出力されます。
100+15の計算結果は115です。
100-15の計算結果は85です。
100×15の計算結果は1500です。
100÷15の計算結果は6余り10です。
すでに紹介しましたが、書式指定項目を{0}、{1}、{2}・・・と指定することで、複数の変数を書式文字列に埋め込めます。
②小数桁以下の表示値制御
小数桁以下の表示値を制御するサンプルプログラムです。カスタム指定子「#」を使ってみます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
double num = 100.12345;
// 書式変換・コンソール表示
// 小数1桁
string s = String.Format(""{0}を小数1桁まで表示:{1:#.#}"", num, num);
Console.WriteLine(s);
// 小数3桁
s = String.Format(""{0}を小数3桁まで表示:{1:#.###}"", num, num);
Console.WriteLine(s);
// 小数4桁
s = String.Format(""{0}を小数4桁まで表示:{1:#.####}"", num, num);
Console.WriteLine(s);
|
実行結果は次のように出力されます。
100.12345を小数1桁まで表示:100.1
100.12345を小数3桁まで表示:100.123
100.12345を小数4桁まで表示:100.1235
「#」の数で小数桁を制御しました。指定した桁以下は四捨五入されます。そのため上記の例では小数4桁まで表示した際、小数5桁目が四捨五入されます。
③文字列の連結
文字列を結合するサンプルプログラムです。書式指定項目を駆使して異なる文字列を結合できます。
1
2
3
4
5
6
7
8
|
string str1 = ""四捨"";
string str2 = ""五入"";
// 書式変換・コンソール表示
string s = String.Format(""文字列「{0}」と「{1}」の結合結果:{0}{1}"", str1, str2);
Console.WriteLine(s);
|
実行結果は次のように出力されます。
文字列「四捨」と「五入」の結合結果:四捨五入
④ゼロ埋め
最後に、数値をゼロ埋めするサンプルプログラムです。書式指定子を使い、桁指定することで実現できます。数値を5桁に、足りない桁は先頭をゼロ埋めします。
1
2
3
4
5
6
7
|
int num = 1;
// 書式変換・コンソール表示
string s = String.Format(""5桁ゼロ埋め結果:{0:D5}"", num);
Console.WriteLine(s);
|
実行結果は次のように出力されます。
5桁ゼロ埋め結果:00001
カスタム指定子を使うことでも同様の結果が得られます。
1
2
3
4
5
6
7
|
int num = 1;
// 書式変換・コンソール表示
string s = String.Format(""5桁ゼロ埋め結果:{0:00000}"", num);
Console.WriteLine(s);
|
- システム
エンジニア - とてもシンプルなコードでわかりやすいです!
- プロジェクト
マネージャー - 式を挿入したりメソッドを呼び出すことも可能なので、より理解しやすい形式ですね。
C#で{0}を使って文字列に変数を埋め込む
いかがだったでしょうか?C#で{0}を使って文字列に変数を埋め込む方法について紹介しました。C#では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万円東京都新宿区(西新宿駅)