スポンサーリンク
※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~
値型を文字列型へ変換して画面に出力
値型と文字列型が混ざったものをコンソールに出力したい場合に、以下のように書いても、望んだ結果は得られません。
ダメなパターン
int a = 10;
int b = 20;
int c = 30;
Console.WriteLine(“1番目の値はa,2番目の値はb,3番目の値はc”);
変数を文字として扱いたい場合は、以下のように書きます
パターン1:パラメーター指定子を使用
Console.WriteLine(“1番目の値は{0},2番目の値は{1},3番目の値は{2}”,a,b,c);
{0}のところにはaの値が、{1}のところにはbの値、{2}のところにはcの値が入ります。
{x}の「x」の部分をパラメーター指定子と呼ばれることがあります。
パターン2:文字列補間(String interpolation)を使用
Console.WriteLine($”1番目の値は{a},2番目の値は{b},3番目の値は{c}”);
パターン1では、パラメーター指定子(ここでは{0})と置換したい変数(ここではa)が離れていてわかりづらいです。
また、置換したい変数が多い場合、パラメーター指定子と変数の対応関係が見づらくなります。
この問題を解決するために、String interpolation(文字列補間)と呼ばれる機能がC#6.0から追加されました。
「$」(ドルマーク)を「”」の前に書くことで、「{}」の中に直接変数を記述できるようになりました。
パターン3:連結演算子を使用
Console.WriteLine(“1番目の値は” + a + “,2番目の値は” + b + “,3番目の値は” + c);
連結演算子「+」は文字列と文字列をくっつけるために使われます。
連結演算子「+」を文字列と値に使用した場合、値は文字列に変換されます。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Number01 { class Program { static void Main(string[] args) { int a = 10; int b = 20; int c = 30; //ダメパターン Console.WriteLine("ダメなパターン"); Console.WriteLine("1番目の値はa,2番目の値はb,3番目の値はc"); Console.WriteLine("--------------"); //書き方にはいくつかパターンがある //パラメーター指定子を使用 Console.WriteLine("1番目の値は{0},2番目の値は{1},3番目の値は{2}",a,b,c); //C#6.0で追加された機能を使う Console.WriteLine($"1番目の値は{a},2番目の値は{b},3番目の値は{c}"); //連結演算子を使う場合 Console.WriteLine("1番目の値は" + a + ",2番目の値は" + b + ",3番目の値は" + c); } } } |
実行結果
ダメなパターン
1番目の値はa,2番目の値はb,3番目の値はc
————–
1番目の値は10,2番目の値は20,3番目の値は30
1番目の値は10,2番目の値は20,3番目の値は30
1番目の値は10,2番目の値は20,3番目の値は30
書式指定をしたい場合
書式指定子を使うことで、値から文字へ変換する際に、書式を変えることができます。
例えば、書式指定子「p」はパーセント表示を意味します。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Number02 { class Program { static void Main(string[] args) { //書式指定したい場合 double x = 0.125; Console.WriteLine("xのパーセント表示は{0:p}です", x); Console.WriteLine($"xのパーセント表示は{x:p}です"); string x_txt = x.ToString("p");//数値から文字へ変換 Console.WriteLine("xのパーセント表示は" + x_txt + "です"); //直接書いても問題ないです Console.WriteLine("xのパーセント表示は" + x.ToString("p") + "です"); string result; result = String.Format("xのパーセント表示は{0:p}です", x); Console.WriteLine(result); result = String.Format($"xのパーセント表示は{x:p}です"); Console.WriteLine(result); } } } |
実行結果
xのパーセント表示は12.50%です
xのパーセント表示は12.50%です
xのパーセント表示は12.50%です
xのパーセント表示は12.50%です
xのパーセント表示は12.50%です
xのパーセント表示は12.50%です
どの書き方でも結果は変わりません。
※補足説明
ToStringは値型を文字列型へ変換するメソッドです。
カッコの中に何も指定しない場合は、値を文字列へ単純に変換します。
値.ToString();
逆に、書式を指定したい場合は、以下のように書きます。
値.ToString(“書式指定子”);
String.Formatも値型を文字列型へ変換する際に使用されます。
関連記事
~プログラミングを勉強してみませんか?~
TechAcademy [テックアカデミー] は無料の体験講座が用意されているので、気軽に体験できます。
※私(サイト主)も無料体験講座を実際に受けてみました(→感想)