Java中的本地序数

时间:2018-04-09 16:22:47

标签: java android formatting numbers

在您将问题标记为重复之前,我已经看到了this questionthis question的答案。正如那些答案所示,英语中的序数后缀规则很简单,但我希望有一种支持本地化的方法。例如,10的序数格式在英语中是第10,但在西班牙语中是10。是否有一个图书馆或任何可以让我避免自己为每种语言实现这一点的东西?

2 个答案:

答案 0 :(得分:0)

将icu依赖项添加到您的gradle:

implementation 'com.ibm.icu:icu4j:xx.xx'

现在你有了RuleBasedNumberFormat,你可以写这样的东西来实现本地化的序数:

RuleBasedNumberFormat formatter = new RuleBasedNumberFormat(Locale.UK, RuleBasedNumberFormat.ORDINAL);

//ordinalNumber = "1st"
String ordinalNumber = formatter.format(1);

答案 1 :(得分:0)

这是一个特定于Android的示例,应遵循语言环境。请注意,它是用Kotlin编写的。

    import android.icu.text.MessageFormat

    val value = 123
    val formatter = MessageFormat("{0,ordinal}", Locale("es", "ES")) // Locale.US for English
    val ordinalValue = formatter.format(arrayOf(value)) // "123.º"