在项目中有500.0或者500.00的状况需求处理
实习的同学写了一段这样的代码
public extension String {
var trimZero: String {
replacingOccurrences(of: ".00", with: "").replacingOccurrences(of: ".0", with:"")
}
}
咋一看如同没啥问题,效果也符合预期
可是上面的case其实没有掩盖全,例如:500.01,那上面的处理方式就有bug了,会被处理成5001
正确的处理方式
public extension String {
var trimZero: String {
guard let value = Double(self) else { return self }
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 0
formatter.maximumFractionDigits = 2
return formatter.string(from: NSNumber(value: value)) ?? self
}
}
测验效果
参看
- iOS中一个很重要,可是不熟悉的类NumberFormatter