android Kotlin-我怎么能把逗号每三个数字写成这样1,000,000,000

e37o9pze  于 2023-05-12  发布在  Android
关注(0)|答案(3)|浏览(188)

我有一个问题,如果你帮助我,我将不胜感激。
这是我的问题的一个例子:
我有一些变量,如(10.000,20,000),用户可以选择它们并增加信用。
当用户点击并选择其中一个时,它会进入银行网关,付款后它会返回到我的应用程序。
我使用文本视图来获取金额。这个没问题。
存储并显示给用户数量是10,000或20,000或100000,我希望是这样的10,000或20,000或100,000
实际上每三个数字加一个逗号。
验证码:

private fun makepayment(amount: Long) {

        val progress = findViewById<RelativeLayout>(R.id.rl_progress)

        val purchase = ZarinPal.getPurchase(this)

        val payment: PaymentRequest = ZarinPal.getSandboxPaymentRequest()
        payment.merchantID = getString(R.string.MerchantId)
        payment.amount = amount
        payment.isZarinGateEnable(true)
        payment.description = getString(R.string.incresemoney)
        payment.setCallbackURL("returnfromzarinpal://mivebaranapp")


        purchase.startPayment(payment) {

                status, authority, paymentGatewayUri, intent ->

            if (status == 100) {

                progress.visibility = View.GONE
                startActivity(intent)

            } else {

                Toast.makeText(
                    this,
                    "خطایی در برقراری ارتباط با درگاه رخ داده ، لطفا دوباره امتحان کنید",
                    Toast.LENGTH_LONG
                ).show()

            }

        }

    }
private fun paymentVerification() {

    val textmoney: TextView = findViewById(R.id.money)
    val data: Uri? = intent.data

    val getpurchase = ZarinPal.getPurchase(this)

    getpurchase.verificationPayment(data) {

            isPaymentSuccess, refID, paymentRequest ->

        if (isPaymentSuccess) {

            textmoney.text = "${paymentRequest.amount} تومان  "

            Toast.makeText(this, "افزایش موجودی شما با موفقیت انجام شد ", Toast.LENGTH_LONG)
                .show()

        } else {

            Toast.makeText(
                this,
                "در عملیات پرداخت خطایی رخ داده ، لطفا دوباره سعی کنید",
                Toast.LENGTH_LONG
            ).show()

        }

    }
c3frrgcw

c3frrgcw1#

试试这个:

textView.text = "%,d".format(100000)

输出:

100,000
p4tfgftt

p4tfgftt2#

你可以将int形式的金额作为agrument传递给函数,并根据要求返回格式化的字符串。作为一个单独的功能,即使你将来改变模式,它也会很有用,并且可以在多个地方使用。

fun applyPattern(d: Int): String? {
val numberFormat = NumberFormat.getInstance(Locale.US) as DecimalFormat
numberFormat.applyPattern("#,###")
return numberFormat.format(d)
}
to94eoyn

to94eoyn3#

这是我的解决方案-->

fun stylePrice(oldPrice: String): String {

    if (oldPrice.length > 3) {
        val reversed = oldPrice.reversed()
        var newPrice = ""
        for (i in oldPrice.indices) {
            newPrice += reversed[i]
            if ((i+1) % 3 == 0) {
                newPrice += ','
            }
        }
        val readyToGo = newPrice.reversed()

        // if you don't use it, when the number is (for example) 532,234
        // it will be like this: ,532,234
        // so we need it :-)
        if (readyToGo.first() == ',') {
            return readyToGo.substring(1) + " Dollars"
        }

        return "$readyToGo Dollars"
    }

    return "$oldPrice Dollars"
}

输出样本:2,000,0002,000

相关问题