C#で簡単にOrdinalsを作成する

数字を扱うとき、数字を序数として表示したいことがあります。これは、1位、2位、3位など、順序における位置を示すものです。C#開発者で、これらの序数を生成する簡単な方法があるのかと考えたことがあるなら、あなたは一人ではありません。

このブログポストでは、C#で序数を作成する方法について説明し、それを達成するための簡単な関数を提供します。それを段階的に分解していきましょう。

Ordinalsの理解

序数は、セット内の何かのランクまたは位置を表します。例えば:

  • 1は1stとして表されます
  • 2は2ndとして表されます
  • 3は3rdとして表されます

課題

C#はString.Format()を通じてさまざまなフォーマットオプションを提供していますが、序数を作成するための組み込まれた機能が含まれていないことに気づいたかもしれません。これは不便ですが、克服できないことではありません。

C#でOrdinalsを実装する

組み込み関数に依存する代わりに、整数をその序数文字列表現に変換するための簡単な関数を作成できます。以下の手順で行います。

コードはこちら

C#プロジェクト内に静的メソッドを作成してください:

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";
    }
}

コードの説明

  1. 入力の検証:

    • この関数は最初に数字がゼロ以下かどうかをチェックします。もしそうであれば、序数はゼロ以下の値には存在しないため、単に数字を文字列として返します。
  2. 特別なケースの処理:

    • 関数は、11、12、13で終わる数字に関連する例外(11th, 12th, 13th)を考慮しています。
  3. 接尾辞の決定:

    • 次に、数字の最後の桁をチェックして適切な接尾辞を決定します:
      • 1の場合は"st"
      • 2の場合は"nd"
      • 3の場合は"rd"
      • その他は"th"。

使用例

この関数はC#コードのどこからでも次のように呼び出すことができます:

string firstOrdinal = AddOrdinal(1); // "1st"を出力
string secondOrdinal = AddOrdinal(2); // "2nd"を出力
string eleventhOrdinal = AddOrdinal(11); // "11th"を出力

結論

C#で序数を作成するのは、カスタム関数を使えば簡単です。.NETフレームワークは現在、序数を簡単にフォーマットするための組み込まれた方法を提供していませんが、上記の方法を共有することで、最小限の労力でその機能を追加できます。

この実装は国際化されていないため、英語の序数のみで機能することに注意してください。アプリケーションが他の言語のサポートを必要とする場合は、テストして拡張してください!

要約すると、少しのコードを使うことで、C#でordinalsを作成する機能を追加でき、アプリケーションの機能性とユーザーエクスペリエンスを向上させることができます。