我正在尝试将 String 转换为 Int。看起来很简单,但出于某种原因,它总是返回 nil
。
我只是在写一个简单的扩展来将美元转换为美分:
func dollarsToCents() -> Int {
var temp = self;
temp = temp.replacingOccurrences(of: "$", with: "")
temp = temp.replacingOccurrences(of: ",", with: "")
if let number = Int(temp) {
return number*100
}
return 0
}
我将 temp
设置为“$250.89”。 number
始终为零。无论我如何将 temp
转换为 Int,它始终为零。有人知道我做错了什么吗?
最佳答案
问题是,字符串 "250.89"
(删除货币符号后)无法转换为 Int
,因为 250.89
不是整数。因此,通过将其转换为 Double
func dollarsToCents() -> Int {
var temp = self
temp.removeAll { "$,".contains($0) }
//temp = temp.replacingOccurrences(of: "[$,]", with: "", options: .regularExpression)
return Int(((Double(temp) ?? 0) * 100).rounded())
}
或者如果你的“数字”总是有两位小数
func dollarsToCents() -> Int {
var temp = self
temp.removeAll { !("0"..."9" ~= $0) }
return Int(temp) ?? 0
}
但我认为解决方案要容易得多。您的目标应该是将 price 值保存为数字 (Double
,...)。然后,您不必将 String
转换为 Double
,只需将数字相乘即可。然后,当您需要添加货币符号时,只需将您的值转换为 String
并添加 $
或使用 NumberFormatter
let price = 250.89
let formattedPrice = "$\(price)" // $250.89
let price = 250.89
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = "USD"
let formattedPrice = formatter.string(from: price as NSNumber)! // $250.89
关于Swift String to Int 总是返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54043008/