ASP.NET中是否有标准格式字符串将1/2/3 / ...转换为1st / 2nd / 3rd ......?

时间:2010-05-28 03:13:31

标签: asp.net integer format-string ordinal-indicator

我在Access数据库中有一个整数,它在ASP.NET中显示。整数表示竞赛者在体育赛事(第一名,第二名,第三名等)中取得的位置,并且我希望以标准后缀(如'st','nd','rd')显示它。 ,而不仅仅是一个裸体数字。

一个重要的限制是,这是一个赋值,它指定不写入VB或C#代码(实际上它指示文件后面的代码被完全删除)。理想情况下我想使用标准格式字符串(如果可用),否则可能是自定义字符串(我没有使用格式字符串太多,而且这不足以将大量时间用于*,但我非常好奇关于是否有一个标准的字符串)。

(*这项任务将于今晚到期,而且我已经学会了我不能花时间处理那些没有得到分数的事情,即使他们让我感到非常烦恼。)

2 个答案:

答案 0 :(得分:3)

不幸的是,没有标准的格式字符串来执行此操作。但写起来并不难:

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

答案 1 :(得分:0)

你可以试试这个

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