【发布时间】:2019-04-11 21:56:21
【问题描述】:
我想在 EditText 输入中每 3 位添加逗号或点。
例子:
- 输入:1000。输出:1.000
- 输入:11000。输出:11.000
【问题讨论】:
标签: kotlin numbers number-formatting
我想在 EditText 输入中每 3 位添加逗号或点。
例子:
【问题讨论】:
标签: kotlin numbers number-formatting
如果你在JVM上,你可以使用
"%,d".format(input)
它为输入11000 提供11,000。将, 替换为您需要的任何分隔符。
如果您想使用预定义的数字格式,例如对于当前语言环境,使用:
java.text.NumberFormat.getIntegerInstance().format(input);
请务必检查其他格式实例,例如getCurrencyInstance 或 getPercentInstance。请注意,您也可以将NumberFormat 与其他语言环境一起使用。只需将它们传递给get*Instance-方法。
第二个变种也可以在这里找到:Converting Integer to String with comma for thousands
如果您通过 Javascript 使用它,您可能对以下内容感兴趣:How do I format numbers using JavaScript?
【讨论】:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
【讨论】:
对于没有获取 Locale 的方法,您可以使用扩展将您的 Int 转换为格式化的字符串,如下所示:
fun Int.formatWithThousandComma(): String {
val result = StringBuilder()
val size = this.toString().length
return if (size > 3) {
for (i in size - 1 downTo 0) {
result.insert(0, this.toString()[i])
if ((i != size - 1) && i != 0 && (size - i) % 3 == 0)
result.insert(0, "\'")
}
result.toString()
} else
this.toString()
}
【讨论】:
这是一种简单的方法,可以用任何字符替换默认分隔符:
val myNumber = NumberFormat.getNumberInstance(Locale.US)
.format(123456789)
.replace(",", "،")
【讨论】: