具有算术运算符加法运算的Swift String数组

时间:2017-12-08 15:19:46

标签: arrays swift

我从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))

1 个答案:

答案 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]