【问题标题】:Does Kotlin have a standard way to format a number as an English ordinal?Kotlin 是否有将数字格式化为英文序数的标准方法?
【发布时间】:2017-01-20 21:31:12
【问题描述】:

在 Swift 中,我可以这样做:

let ordinalFormatter = NumberFormatter()
ordinalFormatter.numberStyle = .ordinal

print(ordinalFormatter.string(from: NSNumber(value: 3))) // 3rd

但我看不出有任何方法可以在 Kotlin 中如此轻松地做到这一点。有没有这样的方法,还是我必须使用 3rd-party 库或自己编写?

【问题讨论】:

  • 嗯,通常很难证明某事不存在。 :) 但我几乎可以肯定 stdlib 中没有这样的功能或任何可以立即适应它的功能。此外,stdlib 不包含任何特定于语言环境的内容,您实际上应该求助于一些第三方软件或实施自己的解决方案。
  • @hotkey 听起来像是对我的回答!
  • 好吧,将其发布为答案。 :)

标签: int kotlin tostring ordinals


【解决方案1】:

嗯,通常很难证明某事不存在。但我从未在kotlin-stdlib 中遇到过任何可以执行此操作或可以立即为此进行调整的功能。此外,kotlin-stdlib 似乎不包含任何特定于语言环境的内容(肯定是数字序数)。

我想您实际上应该求助于一些第三方软件或实施自己的解决方案,这可能就像这样简单:

fun ordinalOf(i: Int) = "$i" + if (i % 100 in 11..13) "th" else when (i % 10) {
    1 -> "st"
    2 -> "nd"
    3 -> "rd"
    else -> "th"
}

另外,Java 中的解决方案:(here)

【讨论】:

  • Int 类也可以扩展,例如:fun Int.asOrdinal() ...
猜你喜欢
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
相关资源
最近更新 更多