一尘不染

有没有一种简单的方法可以在C#中创建序数?

c#

C#中有没有一种简单的方法可以为数字创建数?例如:

  • 1返回第一
  • 2返回第二
  • 3返回第三
  • …等等

可以通过完成此操作String.Format()还是可以使用任何功能?


阅读 240

收藏
2020-05-19

共1个答案

一尘不染

该页面为您提供了所有自定义数字格式设置规则的完整列表:

http://msdn.microsoft.com/zh-
CN/library/0c899ak8.aspx

如您所见,关于序号的内容不多,因此无法使用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而言,普通字符不存在,因此我更新了上面的代码。还删除了多余的ToString()方法。

另请注意,这不是国际化的。我不知道其他语言的序号是什么样子。

2020-05-19