TextField 用 2 个小数点格式化金额

问题描述

我有以下要求

文本字段应将小数点限制为 2 个值。如果用户输入的数字不带任何“.”那么文本字段应该将值格式化为这样

例如输入这个 -> 导致这个数量

27 -> 0.27

2765 -> 27.65

还有如果用户输入“.”在文本字段中,它应该像这样格式化

0.27 ->0.27

27.65 ->27.65

27.6 ->27.60

谢谢

解决方法

在这里,我为你做了辛苦的工作。这不完全是您所要求的,但这是一个很好的起点。下次请详细说明您的问题是什么以及您如何尝试自己解决问题(什么不起作用,什么起作用等),而不仅仅是寻求解决方案...


let inputs = ["2356","232","23.32","00000.20"]

func removeDotsAndLeadingZeros(_ string: String) -> String {
    return string
        .replacingOccurrences(of: ".",with: "")
        .replacingOccurrences(of: "^0*",with: "",options: .regularExpression)
}

func format(_ number: Double) -> String {
    return String(format: "%.2f",number)
}

let noDots = inputs.map(removeDotsAndLeadingZeros)
let doubles = noDots.map { Double($0)! / 100 }
let formatted = doubles.map(format)

// prints ["23.56","2.32","0.20"]
print(formatted)