注册
iOS

价格.0处理

在项目中有500.0或者500.00的情况需要处理


实习的同学写了一段这样的代码

public extension String {
var trimZero: String {
replacingOccurrences(of: ".00", with: "").replacingOccurrences(of: ".0", with:"")
}
}

咋一看似乎没啥问题,结果也符合预期


a704115fa897b375266bb6516dc6a12a.png


但是上面的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
}
}

测试结果


d590aebcbdeb2c86353fa0867292debb.png


参考



作者:xiAo_Ju
链接:https://juejin.cn/post/7273684196635525139
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 个评论

要回复文章请先登录注册