繁体   English   中英

Java 中的本地化序数

[英]Localized Ordinal Numbers in Java

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

将 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);

这是一个应该尊重语言环境的特定于 Android 的示例。 请注意,它是用 Kotlin 编写的。 这需要 Android 7.0 或更高版本。

import android.icu.text.MessageFormat // Don't use java.text.MessageFormat!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM