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)
在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)