Kotlin 是否有将数字格式化为英语序数的标准方法?

Does Kotlin have a standard way to format a number as an English ordinal?

在Swift中,我可以这样做:

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

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

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

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

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

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)