Gre*_*reg 1 arrays closures ios swift
我有一个带小数和十进制数的字符串数组.
let stringArray = [ "0.0", "193.16", "5/4", "503.42", "696.58", "25/16", "1082.89", "2/1"]
Run Code Online (Sandbox Code Playgroud)
每个数组元素都映射到一个闭包中,其中从字符串中提取数字.
let values = stringArray.map { s -> Double in
Run Code Online (Sandbox Code Playgroud)
分数(见前文)
let splitStrings = s.characters.split(separator: "/").map(String.init).map({ Double($0) })
Run Code Online (Sandbox Code Playgroud)
或小数
let splitStrings = s.characters.split(separator: ".").map(String.init).map({ Double($0) })
Run Code Online (Sandbox Code Playgroud)
问题:在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
}
}
Run Code Online (Sandbox Code Playgroud)
split斯威夫特4
let s = "[0, 1, 2, 1]"
let splitted = s.characters.split { [",", "[", "]"].contains($0.description) }
Run Code Online (Sandbox Code Playgroud)
斯威夫特3
let s = "[0, 1, 2, 1]"
let splitted = s.characters.split { [",", "[", "]"].contains($0.description) }
Run Code Online (Sandbox Code Playgroud)
斯威夫特2
let s = "[0, 1, 2, 1]"
let splitted = s.characters.split(isSeparator: {[",", "[", "]"].contains($0)}) }
Run Code Online (Sandbox Code Playgroud)
斯威夫特4
let str = "[0, 1, 2, 1]"
let separatorSet = CharacterSet(charactersIn: ",[]")
let comps = str.components(separatedBy: separatorSet)
Run Code Online (Sandbox Code Playgroud)
斯威夫特3
let str = "[0, 1, 2, 1]"
let separatorSet = CharacterSet(charactersInString: ",[]")
let comps = str.components(separatedBy: separatorSet)
Run Code Online (Sandbox Code Playgroud)
斯威夫特2
let str = "[0, 1, 2, 1]"
let separatorSet = NSCharacterSet(charactersInString: ",[]")
let comps = str.componentsSeparatedByCharactersInSet(separatorSet)
Run Code Online (Sandbox Code Playgroud)
无论我们将使用什么方法,因此,您将收到数组.没有信息,使用了哪个分隔符
如果只需要将String转换为Double
let array = stringArray.compactMap { element -> Double? in
if let value = Double(element) {
return value
}
let parts = element.components(separatedBy: "/")
guard parts.count == 2,
let dividend = Double(parts[0]),
let divisor = Double(parts[1]),
divisor != 0
else {
return nil
}
return dividend / divisor
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |