【问题标题】:Add commas or point every 3 digits using kotlin使用 kotlin 每 3 位数添加逗号或点
【发布时间】:2019-04-11 21:56:21
【问题描述】:

我想在 EditText 输入中每 3 位添加逗号或点。

例子:

  • 输入:1000。输出:1.000
  • 输入:11000。输出:11.000

【问题讨论】:

    标签: kotlin numbers number-formatting


    【解决方案1】:

    如果你在JVM上,你可以使用

    "%,d".format(input)
    

    它为输入11000 提供11,000。将, 替换为您需要的任何分隔符。

    如果您想使用预定义的数字格式,例如对于当前语言环境,使用:

    java.text.NumberFormat.getIntegerInstance().format(input);
    

    请务必检查其他格式实例,例如getCurrencyInstancegetPercentInstance。请注意,您也可以将NumberFormat 与其他语言环境一起使用。只需将它们传递给get*Instance-方法。

    第二个变种也可以在这里找到:Converting Integer to String with comma for thousands

    如果您通过 Javascript 使用它,您可能对以下内容感兴趣:How do I format numbers using JavaScript?

    【讨论】:

      【解决方案2】:

      System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));

      【讨论】:

        【解决方案3】:

        对于没有获取 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()
        }
        
        

        【讨论】:

          【解决方案4】:

          这是一种简单的方法,可以用任何字符替换默认分隔符:

          val myNumber = NumberFormat.getNumberInstance(Locale.US)
             .format(123456789)
             .replace(",", "،")
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-09-08
            • 1970-01-01
            • 2010-12-31
            • 2011-01-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多