Android转换为序数格式

gor*_*nwd 10 android

在我重新发明轮子之前,Android是否有任何设施可以将整数转换为具有多语言支持的序数字符串?也就是说,它会将整数3转换为英语中的"3rd"和法语中的"3eme".

我可以使用一些逻辑以及Android的自动字符串替换来看看如何自己做这个,但是认为这肯定是其他人必须遇到的,而不仅仅是与日期一起使用.

Rui*_*Rui 8

仅供将来参考,我遇到了这个问题,发现现在您可以使用 ICU MessageFormat 执行以下操作:

import android.icu.text.MessageFormat

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

您将得到以下结果:

1 -> 1st
2 -> 2nd
3 -> 3rd
4 -> 4th
5 -> (...)
Run Code Online (Sandbox Code Playgroud)


Com*_*are 7

Java和Android都支持创建序数字符串.Android确实支持创建多个字符串资源,但不支持序数.


zma*_*ies 5

如果您需要序数的范围有限,那么您可能最好使用 a<string-array>来定义它们:

<string-array name="ordinals">
  <item>zeroth</item>
  <item>1st</item>
  <item>2nd</item>
  <item>3rd</item>
  <item>4th</item>
  <item>5th</item>
  <item>6th</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式访问它:

String ordinal = getResources().getStringArray(R.array.ordinals)[count];
Run Code Online (Sandbox Code Playgroud)

当然,这不会让你自动翻译成其他语言——你必须自己做(如果你的计数超出了这个简单代码的范围,你会得到一个例外)。