【问题标题】:Format number as ranking position [duplicate]将数字格式化为排名位置[重复]
【发布时间】:2010-08-04 15:45:01
【问题描述】:

可能重复:
Is there an easy way in .NET to get “st”, “nd”, “rd” and “th” endings for numbers?

C# 中是否已经内置了将数字格式化为排名位置的功能?

“排名位置”是指 ["st","nd,"rd","th"] 之一,例如:(1st, 2nd, 3rd, 4th)。

我知道为此编写扩展很容易,我只是想知道该语言中是否已经有一些东西可以满足。

干杯

【问题讨论】:

标签: c# formatting numbers


【解决方案1】:

不,没有为此目的内置任何内容。不确定它是否相关,但如果您跨越语言/文化,请考虑文化差异。

【讨论】:

  • 谢谢贾米克。在考虑文化时,我正在考虑将序数说明符存储在资源文件中,以便我们可以为某些文化指定特定的说明符。您如何看待这个解决方案?
【解决方案2】:

我已得到纠正。请参阅上述 cmets 中描述的重复问题。

不是开箱即用的;但是,正如您所提到的,扩展非常简单。

public static string ConvertToRankingPosition(this int value)
{
    var digit = value % 10;
    return value != 11 && digit == 1 : value + "st" :
           value != 12 && digit == 2 : value + "nd" :
           value != 13 && digit == 3 : value + "rd" :
           value + "th"
}

【讨论】:

  • 需要处理11、12、13
  • 您的代码似乎没有包含一些极端情况。查看重复问题的答案。
  • 我把它放在这里,就像其他人在所有其他类似的 SO 问题中一样;当 1011 返回第 1011 个时,您的方法被破坏了。
猜你喜欢
  • 2013-03-12
  • 2021-07-25
  • 2020-10-12
  • 2011-05-23
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
相关资源
最近更新 更多