在我重新发明轮子之前,Android是否有任何设施可以将整数转换为具有多语言支持的序数字符串?也就是说,它会将整数3转换为英语中的"3rd"和法语中的"3eme".
我可以使用一些逻辑以及Android的自动字符串替换来看看如何自己做这个,但是认为这肯定是其他人必须遇到的,而不仅仅是与日期一起使用.
仅供将来参考,我遇到了这个问题,发现现在您可以使用 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)
如果您需要序数的范围有限,那么您可能最好使用 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)
当然,这不会让你自动翻译成其他语言——你必须自己做(如果你的计数超出了这个简单代码的范围,你会得到一个例外)。
| 归档时间: |
|
| 查看次数: |
2441 次 |
| 最近记录: |