在Swift2中使用split函数
Using the split function in Swift 2
假设我想用一个空 space 拆分一个字符串。此代码片段在 Swift 1.x 中运行良好。它在 Swift 2 in Xcode 7 Beta 1.
中不起作用
var str = "Hello Bob"
var foo = split(str) {[=11=] == " "}
我收到以下编译器错误:
Cannot invoke 'split' with an argument list of type '(String, (_) -> _)
有人知道如何正确调用它吗?
已更新:添加了一条注释,说明这是针对 Xcode 7 beta 1 的。
split
是 CollectionType
扩展中的一种方法,从 Swift 2 开始,String
不再符合。幸运的是还有其他方法可以拆分 String
:
使用componentsSeparatedByString
:
"ab cd".componentsSeparatedByString(" ") // ["ab", "cd"]
正如@dawg 所指出的,这需要您 import Foundation
.
您可以使用 String
的字符,而不是在 String
上调用 split
。 characters
属性returns一个String.CharacterView
,符合CollectionType
:
" ".characters.split(" ").map(String.init) // ["", ""]
使String
符合CollectionType
:
extension String : CollectionType {}
"w,x,y,z".split(",") // ["w", "x", "y", "z"]
不过,自从 Apple 决定取消 String
对 CollectionType
的遵从性后,坚持使用一两个选项似乎更明智。
在Swift3中,选项1和2分别为:
componentsSeparatedByString(:)
已重命名为 components(separatedBy:)
。
split(:)
已重命名为 split(separator:)
.
Swift 4
let str = "Hello Bob"
let strSplitArray = str.split(separator: " ")
strSplitArray.first! // "Hello"
strSplitArray.last! // "Bob"
Xcode 7.1.1 与 Swift 2.1
let str = "Hello Bob"
let strSplit = str.characters.split(" ")
String(strSplit.first!)
String(strSplit.last!)
在Swift3中componentsSeparatedByString
和split
就是这样使用的
let splitArray = "Hello World".components(separatedBy: " ") // ["Hello", "World"]
拆分
let splitArray = "Hello World".characters.split(separator: " ").map(String.init) // ["Hello", "World"]
假设我想用一个空 space 拆分一个字符串。此代码片段在 Swift 1.x 中运行良好。它在 Swift 2 in Xcode 7 Beta 1.
中不起作用var str = "Hello Bob"
var foo = split(str) {[=11=] == " "}
我收到以下编译器错误:
Cannot invoke 'split' with an argument list of type '(String, (_) -> _)
有人知道如何正确调用它吗?
已更新:添加了一条注释,说明这是针对 Xcode 7 beta 1 的。
split
是 CollectionType
扩展中的一种方法,从 Swift 2 开始,String
不再符合。幸运的是还有其他方法可以拆分 String
:
使用
componentsSeparatedByString
:"ab cd".componentsSeparatedByString(" ") // ["ab", "cd"]
正如@dawg 所指出的,这需要您
import Foundation
.您可以使用
String
的字符,而不是在String
上调用split
。characters
属性returns一个String.CharacterView
,符合CollectionType
:" ".characters.split(" ").map(String.init) // ["", ""]
使
String
符合CollectionType
:extension String : CollectionType {} "w,x,y,z".split(",") // ["w", "x", "y", "z"]
不过,自从 Apple 决定取消
String
对CollectionType
的遵从性后,坚持使用一两个选项似乎更明智。
在Swift3中,选项1和2分别为:
componentsSeparatedByString(:)
已重命名为components(separatedBy:)
。split(:)
已重命名为split(separator:)
.
Swift 4
let str = "Hello Bob"
let strSplitArray = str.split(separator: " ")
strSplitArray.first! // "Hello"
strSplitArray.last! // "Bob"
Xcode 7.1.1 与 Swift 2.1
let str = "Hello Bob"
let strSplit = str.characters.split(" ")
String(strSplit.first!)
String(strSplit.last!)
在Swift3中componentsSeparatedByString
和split
就是这样使用的
let splitArray = "Hello World".components(separatedBy: " ") // ["Hello", "World"]
拆分
let splitArray = "Hello World".characters.split(separator: " ").map(String.init) // ["Hello", "World"]