1. ホーム
  2. c#

[解決済み】C#で序数を作成する簡単な方法はありますか?

2022-04-08 03:52:41

質問

C#で簡単に 序数 を数字で表すことはできますか?例えば、以下のようなものです。

  • 1は1位を返します
  • 2は2位を意味します。
  • 3は3位を意味します。
  • ...など

を通して行うことができますか? String.Format() あるいは、これを実現するための関数はあるのでしょうか?

どのように解決するのですか?

このページでは、すべてのカスタム数値フォーマットルールの完全なリストを提供します。

カスタム数値フォーマット文字列

見ての通り、序数については何も書かれていませんので、このような場合は String.Format . しかし、それを実現するための関数を書くのはそれほど難しいことではありません。

public static string AddOrdinal(int num)
{
    if( num <= 0 ) return num.ToString();

    switch(num % 100)
    {
        case 11:
        case 12:
        case 13:
            return num + "th";
    }
    
    switch(num % 10)
    {
        case 1:
            return num + "st";
        case 2:
            return num + "nd";
        case 3:
            return num + "rd";
        default:
            return num + "th";
    }
}

更新:技術的には、<= 0に対応するOrdinalは存在しないので、上記のコードを更新しました。また、冗長な ToString() メソッドを追加しました。

また、これは国際化されていないことに注意してください。他の言語では序数がどのように見えるのか見当もつきません。