3

我正在尝试通过选择格式获得在排行榜中使用的英文序数。

我目前的解决方案是有这样的东西:

{0,choice,0#th|1#st|2#nd|3#rd|3<th}

并使用这是一个参数。

int pos = position % 100 >= 11 && position % 100 <= 13 ? 0 : position % 10

这很好用,但我发现你可以{0,ordinal}与 ICU 一起使用。

有没有简单的方法让它在没有 ICU 的情况下工作?

4

1 回答 1

1

你可以使用这样的东西:

import android.icu.text.MessageFormat

fun toOrdinal(day: String): String {
    val formatter = MessageFormat("{0,ordinal}", Locale.getDefault())
    return formatter.format(arrayOf(day.toInt()))
}

你会得到这些结果:

1 -> 1st
2 -> 2nd
3 -> 3rd
4 -> 4th
6 -> (...)
于 2020-08-12T09:18:19.787 回答