在Swift 2中使用分割函数
比方说,我想通过一个空的空间拆分一个string。 这个代码片段在Swift 1.x中工作正常。 它在Xcode 7 Beta 1中的Swift 2中不起作用。
var str = "Hello Bob" var foo = split(str) {$0 == " "}
我得到以下编译器错误:
Cannot invoke 'split' with an argument list of type '(String, (_) -> _)
任何人都知道如何正确调用它?
更新 :添加了一个注意,这是Xcode 7testing版1。
split
是CollectionType
的扩展中的一个方法,从Swift 2开始, String
不再符合。 幸运的是,还有其他的方式来分割一个String
:
-
使用
componentsSeparatedByString
:"ab cd".componentsSeparatedByString(" ") // ["ab", "cd"]
正如@dawg指出的那样,这需要你
import Foundation
。 -
您可以使用
String
的字符,而不是在String
上调用split
。characters
属性返回一个String.CharacterView
,它符合CollectionType
:"😀 🇬🇧".characters.split(" ").map(String.init) // ["😀", "🇬🇧"]
-
使
String
符合CollectionType
:extension String : CollectionType {} "w,x,y,z".split(",") // ["w", "x", "y", "z"]
虽然,由于苹果决定删除
String
与CollectionType
的一致性,所以坚持一两个选项似乎更明智。
在Swift 3中,分别在选项1和2中:
-
componentsSeparatedByString(:)
已被重命名为components(separatedBy:)
。 -
split(:)
已经被重命名为split(separator:)
。
斯威夫特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!)
在Swift 3中, componentsSeparatedByString
SeparatedByString和split
是这样使用的。
let splitArray = "Hello World".components(separatedBy: " ") // ["Hello", "World"]
分裂
let splitArray = "Hello World".characters.split(separator: " ").map(String.init) // ["Hello", "World"]