快速添加逗号到字符串整数

时间:2019-05-25 13:44:03

标签: swift string decimal comma

好一会儿后,我无法找到适合我问题的答案。

我有一些字符串,其中包含产品pricez的数字。例如1000、500或50。我希望将它们转换为2个小数:10.00、5.00和0.50

我如何才能做到这一点,而且也可以不将它们转换为int或float以保留字符串的情况?

4 个答案:

答案 0 :(得分:2)

您可以先尝试将价格转换为整数,然后再除以100 –这样就得到了十进制/浮点值。然后使用NSNumberFormatter

转换回字符串

更新

let formatter = NumberFormatter()
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2
formatter.minimumIntegerDigits = 1
// formatter.decimalSeparator = "." <- optional step

let double1 = Double(0.5)
let double2 = Double(100.00)
let double3 = Double(50.00555)

print(formatter.string(for: double1))
print(formatter.string(for: double2))
print(formatter.string(for: double3))

// prints
Optional("0.50")
Optional("100.00")
Optional("50.01")

答案 1 :(得分:0)

要将其设置为所需的格式,您需要将数字字符串转换为浮点数,然后除以100,然后再次返回字符串。

下面是我根据您的想法改编而成的扩展程序。

var numberString = "20"

extension String {
    var decimalString: String? {
        guard let float = Float(self) else { return nil }
        let fraction = float / 100

        return String(format: "%.2f", fraction)
    }
}

// You could unwrap the option either this way...
if let decimalString = numberString.decimalString {
    print(decimalString)
}

// or this way...
print(numberString.decimalString ?? "Invalid value")

答案 2 :(得分:-1)

您将必须使用NumberFormatter并将值除以100

这是一个简单的String扩展名,如果不能将字符串转换为Double,它将返回字符串值:

extension String {
var convertToPrice: String? {
    guard let value = Double(self) else { return self }
    let divided = value / 100
    let currencyFormatter = NumberFormatter()
    currencyFormatter.numberStyle = .currency
    currencyFormatter.currencySymbol = ""
    currencyFormatter.decimalSeparator = "."
    if let priceString = currencyFormatter.string(for: divided) {
        return priceString
    }
    return self
}
}

用法:

"50".convertToPrice // "0.50"

答案 3 :(得分:-2)

发现这可以更轻松:

func formatPrice(price: String) -> String{
    let pr = Double(price)!/100
    return String(format: "%.2f",pr)
}

usage: formatPrice("1000") //returning 10.00