在项目中有500.0或者500.00的状况需求处理

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

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

咋一看如同没啥问题,效果也符合预期

价格.0处理

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

测验效果

价格.0处理

参看

  • iOS中一个很重要,可是不熟悉的类NumberFormatter
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。