目次
はじめに
C# の ToString
メソッドを使うと、変数やオブジェクトを文字列に変換できます。
例えば以下のように int 型の数値を string 型に変換できます。
int num = 123;
string numStr = num.ToString();
ToString メソッドでは引数に「書式指定子」を指定できます。これを活用することで変換時に文字列をカスタマイズできます。
本記事では ToString
メソッドで使える書式指定子をいくつか紹介します。
数値を3桁コンマ区切りにする
“N” は 数値書式指定子 と呼ばれ、ToString("N0")
とすることで整数値が3桁のコンマ区切り文字列に変換されます。string.Format
を使った変換も可能です。
int num = 1234;
Debug.Log(num.ToString("N0"));// => 1,234
// string.Format を使う方法
Debug.Log(string.Format("{0:#,0}", num));// => 1,234
参考 数値書式指定子 (N)Microsoft ドキュメント
小数点以下の桁数を指定する
“F” は 固定小数点書式指定子 と呼ばれ、小数点以下の桁数を指定できます。
F の右横で指定できる数値は「精度指定子」と呼ばれ、この数値が小数部の桁数を表します。例えば ToString("F2")
とすると小数部の桁数は2桁になります。その際溢れた部分の少数値は四捨五入されます。
float num = 123.456f;
Debug.Log(num.ToString("F"));// => 123.46
Debug.Log(num.ToString("F3"));// => 123.456
Debug.Log(num.ToString("F4"));// => 123.4560
精度指定子を省略して ToString("F")
と表記することも可能です。その場合はデフォルトで小数部の桁数が2桁になります。またNumberFormatInfo.CurrencyDecimalDigits
プロパティからデフォルトの桁数を変更できます。
参考 固定小数点書式指定子 (F)Microsoft ドキュメント
金額を表す文字列に変換する
“C” は 通貨書式指定子と呼ばれ、数値を金額を表す文字列に変換します。 そのため、変換後は文字列に円 (¥) やドル ($) の通貨記号が追加されます。精度指定子は小数部の桁数を表します。
CultureInfo.CurrentCulture
で現在設定中のカルチャ情報が取得できます。日本語設定の場合は "ja-JP"
で、英語設定の場合は "en-US"
となります。
// 現在設定中のカルチャ情報を取得
Debug.Log(CultureInfo.CurrentCulture);// => en-US
int num = 7000;
Debug.Log(num.ToString("C"));// => $7,000.00
Debug.Log(num.ToString("C3"));// => $7,000.000
// 通貨を日本に設定
var japanInfo = new CultureInfo("ja-JP");
Debug.Log(num.ToString("C", japanInfo)); // => ¥7,000
参考 通貨書式指定子 (C)Microsoft ドキュメント
日付や時刻表示の文字列に変換する
System.DateTime.Now
で取得した日付や時刻の情報を様々な文字列形式に変換できます。
// カルチャ情報を日本に設定
CultureInfo.CurrentCulture = new CultureInfo("ja-JP");
System.DateTime time = System.DateTime.Now;
Debug.Log(time.ToString("D"));// => 2021年4月20日
Debug.Log(time.ToString("d"));// => 2021/04/20
Debug.Log(time.ToString("T"));// => 22:09:52
Debug.Log(time.ToString("t"));// => 22:09
Debug.Log(time.ToString("F"));// => 2021年4月20日 22:09:52
Debug.Log(time.ToString("u"));// => 2021-04-20 22:09:52Z
Debug.Log(time.ToString("G"));// => 2021/04/20 22:09:52
パーセント (%) 表記に変換する
“P” は パーセント書式指定子 と呼ばれ、数値に 100 を掛けてパーセントを表す文字列に変換します。 精度指定子は小数部の桁数を表します。
float num = 0.7428f;
Debug.Log(num.ToString("P"));// => 74.28 %
Debug.Log(num.ToString("P1"));// => 74.3 %
参考 パーセント書式指定子 (P)Microsoft ドキュメント
指定した桁数になるまで 0 埋めする
“D” は 10 進数書式指定子 と呼ばれ、精度指定子で指定した桁数になるまで数値の左側を 0 埋めします。
int num = 777;
Debug.Log(num.ToString("D"));// => 777
Debug.Log(num.ToString("D5"));// => 00777
参考 10 進数書式指定子 (D)Microsoft ドキュメント
数値を 10 進数から 16 進数に変換する
“X” は 16 進書式指定子 と呼ばれ、数値を 16 進数文字列に変換します。
小文字の “x” と指定すれば、16進数の変換時にアルファベット文字が小文字になります。
Debug.Log(1.ToString("X"));// => 1
Debug.Log(10.ToString("X"));// => A
Debug.Log(10.ToString("x"));// => a
Debug.Log(30.ToString("X"));// => 1E
Debug.Log(16.ToString("X8"));// => 00000010
参考 16 進書式指定子 (X)Microsoft ドキュメント
参考資料
- 標準の数値書式指定文字列 | Microsoft ドキュメント
関連記事
【 C# 】文字列を連結させる6つの方法【StringBuilder, Joinなど】 【C#】文字列を分割して配列やリストにする方法【String.Split】