ASP.NET には、1/2/3/… を 1st/2nd/3rd… に変換する標準の書式文字列はありますか?

StackOverflow https://stackoverflow.com/questions/2926445

質問

Access データベースに整数があり、ASP.NET で表示されています。整数はスポーツ イベントで競技者が達成した順位 (1 位、2 位、3 位など) を表し、必要に応じて「st」、「nd」、「rd」などの標準的な接尾辞を付けて表示したいと考えています。 、単なる裸の数字ではなく。

重要な制限は、これは VB または C# コードを記述しないことを指定する割り当てに対するものであることです (実際、ファイルの背後にあるコードを完全に削除するよう指示します)。理想的には、利用可能な場合は標準の書式文字列を使用し、そうでない場合はカスタム文字列を使用したいと考えています (私は書式文字列をあま​​り扱ったことがなく、これに多くの時間を費やすほどの優先度は高くありません*。しかし、非常に興味があります)これに対する標準文字列があるかどうかについては)。

(* 課題は今夜が締め切りです。たとえ非常に腹立たしいものであっても、点数が取れないことに時間を費やす余裕はないということを私は苦労して学びました。)

役に立ちましたか?

解決

残念ながら、これを行うための標準の書式文字列はありません。しかし、書くのはそれほど難しいことではありません。

public static string ToOrdinal(this int i, string format)
{
   string suffix = "th";
   switch (i%100)
   {
       case 11:
       case 12:
       case 13:
          //deliberately empty
          break;
       default:
          switch (i%10)
          {
              case 1:
                  suffix = "st";
                  break;
              case 2:
                  suffix = "nd";
                  break;
              case 3:
                  suffix = "rd";
                  break;
           }
           break;
   }
   return i.ToString(format) + suffix;
}

他のヒント

これを試してみてもいいでしょう

public static string FormatOrdinalNumber(int number)
{
    if (number == 0) return "0";
    switch (number % 100)
    {
        case 11: 
        case 12: 
        case 13: 
        return number + "th";
    }
    switch (number % 10)
    {
        case 1: return number + "st";
        case 2: return number + "nd";
        case 3: return number + "rd";
    }
    return number + "th";
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top