我从RealmDB中获取字符串格式的值。但是,此字符串包含算术格式的值,如下所示
let values = ["1/2","1/3","2/3","3/5","1/7"]
现在我的问题是我要返回整个数组的加法值。我无法将其转换为Double值,因为字符串本身包含算术运算符。如何对上面的字符串数组执行加法?
我曾尝试使用NSExpreesion进行数学运算,但它给出了零值。
let expn = NSExpression(format:"1/3")
print(expn.expressionValue(with: nil, context: nil))
答案 0 :(得分:1)
您可以在阵列上使用单个flatMap
将小数String
转换为Double
s。您只需使用String.componenets(separatedBy:)
将字符串分成两部分,然后尝试将String
部分转换为数字,如果成功,则进行除法。
在转换为""
期间使用Int
默认值,以确保即使数组中的某些值不是合适的分数,您的应用也不会崩溃。
let fractionStrings = ["1/2","1/3","2/3","3/5","1/7"]
let fractions = fractionStrings.flatMap({ fractionString -> Double? in
let numbers = fractionString.components(separatedBy: "/")
if let nominator = Int(numbers.first ?? ""), let denominator = Int(numbers.last ?? "") {
return Double(nominator)/Double(denominator)
} else {
return nil
}
})
print(fractions)
输出:
[0.5,0.3333333333333333,0.66666666666666666,0.6,0.1428571428571428]