Ahm*_*med 10 numbers number-formatting kotlin
我想在 EditText 输入中添加逗号或每 3 位点。
例子 :
Rol*_*and 23
如果您在 JVM 上,则可以使用
"%,d".format(input)
Run Code Online (Sandbox Code Playgroud)
这给出11,000了输入11000。替换,为您需要的任何分隔符。
如果要使用预定义的数字格式,例如对于当前语言环境,请使用:
java.text.NumberFormat.getIntegerInstance().format(input);
Run Code Online (Sandbox Code Playgroud)
还要确保检查其他格式实例,例如getCurrencyInstance或getPercentInstance。请注意,您也NumberFormat可以与其他语言环境一起使用。只需将它们传递给get*Instance- 方法。
一些第二个变体也可以在这里找到:Converting Integer to String with逗号为数千
如果您通过 Javascript 使用它,您可能会感兴趣:如何使用 JavaScript 格式化数字?
Wil*_*lva 16
根据上面的 Splitframe 答案,做了一个简化版本(没有var):
fun Int.formatDecimalSeparator(): String {
return toString()
.reversed()
.chunked(3)
.joinToString(",")
.reversed()
}
Run Code Online (Sandbox Code Playgroud)
并添加了一些测试:
@Test
fun whenFormatDecimal_thenReturnFormatted() {
mapOf(
1 to "1",
12 to "12",
123 to "123",
1234 to "1,234",
12345 to "12,345",
123456 to "123,456",
1234567 to "1,234,567",
12345678 to "12,345,678",
123456789 to "123,456,789",
1234567890 to "1,234,567,890",
).forEach { (test, expected) ->
val result = test.formatDecimalSeparator()
assertEquals(expected, result)
}
}
Run Code Online (Sandbox Code Playgroud)
就我而言,这是一个 KMM 项目,我们不支持其他语言,所以它可以完成这项工作。我想说更好的解决方案是创建一个expectUtil 类,并且每个平台都考虑用户区域设置等来实现格式化程序。
| 归档时间: |
|
| 查看次数: |
4573 次 |
| 最近记录: |