【发布时间】:2016-12-26 22:17:05
【问题描述】:
我有一个包含小数和小数的字符串数组。
let stringArray = [ "0.0", "193.16", "5/4", "503.42", "696.58", "25/16", "1082.89", "2/1"]
每个数组元素都映射在一个闭包中,其中从字符串中提取数字。
let values = stringArray.map { s -> Double in
任一小数(见earlier post)
let splitStrings = s.characters.split(separator: "/").map(String.init).map({ Double($0) })
或十进制
let splitStrings = s.characters.split(separator: ".").map(String.init).map({ Double($0) })
问题:在 Swift 中,有没有一种方法可以使用多个分隔符来拆分字符串,以便单个闭包可以返回小数值或小数值?
(继续关闭)
switch (token)) {
case "/" :
print( "fraction")
let pathA = splitString[0]!/splitString[1]!
return pathA
case "." :
print( "decimal")
let upperSplit = splitString[0]!
let lowerSplit = splitString[1]! * 0.1 // restore decimal point
let pathB = upperSplit+lowerSplit
return pathB
}
}
【问题讨论】:
-
为什么要在小数点处拆分像
"193.16"这样的字符串?您可以直接将其转换为Double。 -
为什么你的字符串数组变量命名为
string?这真是令人困惑。 -
@Martin R,正确,只有小数才需要拆分。如果闭包可以识别小数或小数,则对小数进行除法并将
"193.16"直接转换为Double,我会非常满意。 -
@rmaddy,点了。我重命名了它。希望 stringArray 更清晰