代码之家  ›  专栏  ›  技术社区  ›  David Mason

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

  •  1
  • David Mason  · 技术社区  · 15 年前

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

    一个重要的限制是,对于指定不编写VB或C代码的赋值(实际上它指示完全删除文件后面的代码)。理想情况下,我希望使用标准格式字符串(如果可用),否则可能是自定义字符串(我对格式字符串没有太多的研究,而且优先级也不够高,无法将大量时间用于*,但我很好奇是否有标准字符串用于此操作)。

    (*作业今晚就要交了,我学到了一个很难的方法,那就是我不能把时间花在没有分数的事情上,即使这些事情让我非常恼火。)

    2 回复  |  直到 11 年前
        1
  •  3
  •   Joel Coehoorn    15 年前

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

    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;
    }
    
        2
  •  0
  •   Yasser Shaikh    11 年前

    你可以试试这个

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